<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>YaYAML/IIndexable.cs</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -11,11 +11,7 @@ namespace YaYAML.Tests
             var result = Parse&lt;YamlDocument&gt;(x =&gt; x.Document,
                 &quot;hr: 65&quot;);
 
-            var map = result.Items[0] as YamlMapping;
-
-            Assert.That(map, Is.Not.Null);
-            Assert.That(map.ContainsKey(&quot;hr&quot;), Is.True);
-            Assert.That(map[&quot;hr&quot;].ToString(), Is.EqualTo(&quot;65&quot;));
+            Assert.That(result[&quot;hr&quot;].ToString(), Is.EqualTo(&quot;65&quot;));
         }
 
         [Test]
@@ -24,11 +20,7 @@ namespace YaYAML.Tests
             var result = Parse&lt;YamlDocument&gt;(x =&gt; x.Document,
                 &quot;hr:    65&quot;);
 
-            var map = result.Items[0] as YamlMapping;
-
-            Assert.That(map, Is.Not.Null);
-            Assert.That(map.ContainsKey(&quot;hr&quot;), Is.True);
-            Assert.That(map[&quot;hr&quot;].ToString(), Is.EqualTo(&quot;65&quot;));
+            Assert.That(result[&quot;hr&quot;].ToString(), Is.EqualTo(&quot;65&quot;));
         }
 
         [Test]
@@ -38,11 +30,7 @@ namespace YaYAML.Tests
                 &quot;Fatal:&quot;,
                 &quot;  Unknown variable \&quot;bar\&quot;&quot;);
 
-            var map = result.Items[0] as YamlMapping;
-
-            Assert.That(map, Is.Not.Null);
-            Assert.That(map.ContainsKey(&quot;Fatal&quot;), Is.True);
-            Assert.That(map[&quot;Fatal&quot;].ToString(), Is.EqualTo(&quot;Unknown variable \&quot;bar\&quot;&quot;));
+            Assert.That(result[&quot;Fatal&quot;].ToString(), Is.EqualTo(&quot;Unknown variable \&quot;bar\&quot;&quot;));
         }
 
         [Test]
@@ -53,11 +41,7 @@ namespace YaYAML.Tests
                 &quot;  A slightly different error&quot;,
                 &quot;  message.&quot;);
 
-            var map = result.Items[0] as YamlMapping;
-
-            Assert.That(map, Is.Not.Null);
-            Assert.That(map.ContainsKey(&quot;Warning&quot;), Is.True);
-            Assert.That(map[&quot;Warning&quot;].ToString(), Is.EqualTo(&quot;A slightly different error message.&quot;));
+            Assert.That(result[&quot;Warning&quot;].ToString(), Is.EqualTo(&quot;A slightly different error message.&quot;));
         }
 
         [Test]
@@ -68,15 +52,9 @@ namespace YaYAML.Tests
                 &quot;avg: 0.278&quot;,
                 &quot;rbi: 147&quot;);
 
-            var map = result.Items[0] as YamlMapping;
-
-            Assert.That(map, Is.Not.Null);
-            Assert.That(map.ContainsKey(&quot;hr&quot;), Is.True);
-            Assert.That(map.ContainsKey(&quot;avg&quot;), Is.True);
-            Assert.That(map.ContainsKey(&quot;rbi&quot;), Is.True);
-            Assert.That(map[&quot;hr&quot;].ToString(), Is.EqualTo(&quot;65&quot;));
-            Assert.That(map[&quot;avg&quot;].ToString(), Is.EqualTo(&quot;0.278&quot;));
-            Assert.That(map[&quot;rbi&quot;].ToString(), Is.EqualTo(&quot;147&quot;));
+            Assert.That(result[&quot;hr&quot;].ToString(), Is.EqualTo(&quot;65&quot;));
+            Assert.That(result[&quot;avg&quot;].ToString(), Is.EqualTo(&quot;0.278&quot;));
+            Assert.That(result[&quot;rbi&quot;].ToString(), Is.EqualTo(&quot;147&quot;));
         }
 
         [Test]
@@ -92,19 +70,11 @@ namespace YaYAML.Tests
                 &quot;  fourth&quot;,
                 &quot;fifth: 5&quot;);
 
-            var map = result.Items[0] as YamlMapping;
-
-            Assert.That(map, Is.Not.Null);
-            Assert.That(map.ContainsKey(&quot;one&quot;), Is.True);
-            Assert.That(map.ContainsKey(&quot;two&quot;), Is.True);
-            Assert.That(map.ContainsKey(&quot;three&quot;), Is.True);
-            Assert.That(map.ContainsKey(&quot;four&quot;), Is.True);
-            Assert.That(map.ContainsKey(&quot;fifth&quot;), Is.True);
-            Assert.That(map[&quot;one&quot;].ToString(), Is.EqualTo(&quot;1&quot;));
-            Assert.That(map[&quot;two&quot;].ToString(), Is.EqualTo(&quot;2&quot;));
-            Assert.That(map[&quot;three&quot;].ToString(), Is.EqualTo(&quot;3&quot;));
-            Assert.That(map[&quot;four&quot;].ToString(), Is.EqualTo(&quot;this is the fourth&quot;));
-            Assert.That(map[&quot;fifth&quot;].ToString(), Is.EqualTo(&quot;5&quot;));
+            Assert.That(result[&quot;one&quot;].ToString(), Is.EqualTo(&quot;1&quot;));
+            Assert.That(result[&quot;two&quot;].ToString(), Is.EqualTo(&quot;2&quot;));
+            Assert.That(result[&quot;three&quot;].ToString(), Is.EqualTo(&quot;3&quot;));
+            Assert.That(result[&quot;four&quot;].ToString(), Is.EqualTo(&quot;this is the fourth&quot;));
+            Assert.That(result[&quot;fifth&quot;].ToString(), Is.EqualTo(&quot;5&quot;));
         }
     }
 }
\ No newline at end of file</diff>
      <filename>Tests/ParsingFlatMappings.cs</filename>
    </modified>
    <modified>
      <diff>@@ -15,15 +15,7 @@ namespace YaYAML.Tests
             var result = Parse&lt;YamlDocument&gt;(x =&gt; x.Document,
                 &quot;- Mark McGwire&quot;);
 
-            var seq = result.Items[0] as YamlSequence;
-
-            Assert.That(seq, Is.Not.Null);
-            Assert.That(seq.Count, Is.EqualTo(1));
-
-            var content = seq[0] as YamlText;
-
-            Assert.That(content, Is.Not.Null);
-            Assert.That(content.ToString(), Is.EqualTo(&quot;Mark McGwire&quot;));
+            Assert.That(result[0].ToString(), Is.EqualTo(&quot;Mark McGwire&quot;));
         }
 
         [Test]
@@ -34,25 +26,9 @@ namespace YaYAML.Tests
                 &quot;- Sammy Sosa&quot;,
                 &quot;- Ken Griffey&quot;);
 
-            var seq = result.Items[0] as YamlSequence;
-
-            Assert.That(seq, Is.Not.Null);
-            Assert.That(seq.Count, Is.EqualTo(3));
-
-            var first = seq[0] as YamlText;
-
-            Assert.That(first, Is.Not.Null);
-            Assert.That(first.ToString(), Is.EqualTo(&quot;Mark McGwire&quot;));
-
-            var second = seq[1] as YamlText;
-
-            Assert.That(second, Is.Not.Null);
-            Assert.That(second.ToString(), Is.EqualTo(&quot;Sammy Sosa&quot;));
-
-            var third = seq[2] as YamlText;
-
-            Assert.That(third, Is.Not.Null);
-            Assert.That(third.ToString(), Is.EqualTo(&quot;Ken Griffey&quot;));
+            Assert.That(result[0].ToString(), Is.EqualTo(&quot;Mark McGwire&quot;));
+            Assert.That(result[1].ToString(), Is.EqualTo(&quot;Sammy Sosa&quot;));
+            Assert.That(result[2].ToString(), Is.EqualTo(&quot;Ken Griffey&quot;));
         }
     }
 }
\ No newline at end of file</diff>
      <filename>Tests/ParsingFlatSequences.cs</filename>
    </modified>
    <modified>
      <diff>@@ -14,23 +14,9 @@ namespace YaYAML.Tests
                 &quot;    - two&quot;,
                 &quot;- three&quot;);
 
-            var seq = result.Items[0] as YamlSequence;
-
-            Assert.That(seq, Is.Not.Null);
-            Assert.That(seq.Count, Is.EqualTo(2));
-
-            var first = seq[0] as YamlMapping;
-
-            Assert.That(first, Is.Not.Null);
-            Assert.That(first.ContainsKey(&quot;value&quot;), Is.True);
-
-            var seq2 = first[&quot;value&quot;] as YamlSequence;
-
-            Assert.That(seq2, Is.Not.Null);
-            Assert.That(seq2.Count, Is.EqualTo(2));
-            Assert.That(seq2[0].ToString(), Is.EqualTo(&quot;one&quot;));
-            Assert.That(seq2[1].ToString(), Is.EqualTo(&quot;two&quot;));
-            Assert.That(seq[1].ToString(), Is.EqualTo(&quot;three&quot;));
+            Assert.That(result[0][&quot;value&quot;][0].ToString(), Is.EqualTo(&quot;one&quot;));
+            Assert.That(result[0][&quot;value&quot;][1].ToString(), Is.EqualTo(&quot;two&quot;));
+            Assert.That(result[1].ToString(), Is.EqualTo(&quot;three&quot;));
         }
 
         [Test]
@@ -44,34 +30,10 @@ namespace YaYAML.Tests
                 &quot;    - three&quot;,
                 &quot;    - four&quot;);
 
-            var seq = result.Items[0] as YamlSequence;
-
-            Assert.That(seq, Is.Not.Null);
-            Assert.That(seq.Count, Is.EqualTo(2));
-
-            var first = seq[0] as YamlMapping;
-
-            Assert.That(first, Is.Not.Null);
-            Assert.That(first.ContainsKey(&quot;value&quot;), Is.True);
-
-            var firstSeq = first[&quot;value&quot;] as YamlSequence;
-
-            Assert.That(firstSeq, Is.Not.Null);
-            Assert.That(firstSeq.Count, Is.EqualTo(2));
-            Assert.That(firstSeq[0].ToString(), Is.EqualTo(&quot;one&quot;));
-            Assert.That(firstSeq[1].ToString(), Is.EqualTo(&quot;two&quot;));
-
-            var second = seq[1] as YamlMapping;
-
-            Assert.That(second, Is.Not.Null);
-            Assert.That(second.ContainsKey(&quot;value2&quot;), Is.True);
-
-            var secondSeq = second[&quot;value2&quot;] as YamlSequence;
-
-            Assert.That(secondSeq, Is.Not.Null);
-            Assert.That(secondSeq.Count, Is.EqualTo(2));
-            Assert.That(secondSeq[0].ToString(), Is.EqualTo(&quot;three&quot;));
-            Assert.That(secondSeq[1].ToString(), Is.EqualTo(&quot;four&quot;));
+            Assert.That(result[0][&quot;value&quot;][0].ToString(), Is.EqualTo(&quot;one&quot;));
+            Assert.That(result[0][&quot;value&quot;][1].ToString(), Is.EqualTo(&quot;two&quot;));
+            Assert.That(result[1][&quot;value2&quot;][0].ToString(), Is.EqualTo(&quot;three&quot;));
+            Assert.That(result[1][&quot;value2&quot;][1].ToString(), Is.EqualTo(&quot;four&quot;));
         }
     }
 }
\ No newline at end of file</diff>
      <filename>Tests/ParsingListOfMappingsWithListsAsValues.cs</filename>
    </modified>
    <modified>
      <diff>@@ -20,30 +20,10 @@ namespace YaYAML.Tests
                 &quot;  - name: Uma&quot;,
                 &quot;    reason: too tall&quot;);
 
-            var map = result.Items[0] as YamlMapping;
-
-            Assert.That(map, Is.Not.Null);
-            Assert.That(map.ContainsKey(&quot;good_people&quot;), Is.True,
-                &quot;Expected key 'good_people'&quot;);
-
-            var good_people = map[&quot;good_people&quot;] as YamlSequence;
-
-            Assert.That(good_people, Is.Not.Null);
-            Assert.That(good_people.Count, Is.EqualTo(2));
-
-            VerifyPerson(good_people[0] as YamlMapping, &quot;James&quot;, &quot;always happy&quot;);
-            VerifyPerson(good_people[1] as YamlMapping, &quot;Sara&quot;, &quot;is nice&quot;);
-
-            Assert.That(map.ContainsKey(&quot;bad_people&quot;), Is.True,
-                &quot;Expected key 'bad_people'&quot;);
-
-            var bad_people = map[&quot;bad_people&quot;] as YamlSequence;
-
-            Assert.That(bad_people, Is.Not.Null);
-            Assert.That(bad_people.Count, Is.EqualTo(2));
-
-            VerifyPerson(bad_people[0] as YamlMapping, &quot;Bob&quot;, &quot;smells&quot;);
-            VerifyPerson(bad_people[1] as YamlMapping, &quot;Uma&quot;, &quot;too tall&quot;);
+            VerifyPerson(result[&quot;good_people&quot;][0] as YamlMapping, &quot;James&quot;, &quot;always happy&quot;);
+            VerifyPerson(result[&quot;good_people&quot;][1] as YamlMapping, &quot;Sara&quot;, &quot;is nice&quot;);
+            VerifyPerson(result[&quot;bad_people&quot;][0] as YamlMapping, &quot;Bob&quot;, &quot;smells&quot;);
+            VerifyPerson(result[&quot;bad_people&quot;][1] as YamlMapping, &quot;Uma&quot;, &quot;too tall&quot;);
         }
 
         [Test]
@@ -57,33 +37,9 @@ namespace YaYAML.Tests
                 &quot;          one&quot;,
                 &quot;  - name: Sara&quot;);
 
-            var map = result.Items[0] as YamlMapping;
-
-            Assert.That(map, Is.Not.Null);
-            Assert.That(map.ContainsKey(&quot;good_people&quot;), Is.True,
-                &quot;Expected key 'good_people'&quot;);
-
-            var good_people = map[&quot;good_people&quot;] as YamlSequence;
-
-            Assert.That(good_people, Is.Not.Null);
-            Assert.That(good_people.Count, Is.EqualTo(2));
-
-            var mapping = good_people[0] as YamlMapping;
-
-            Assert.That(mapping, Is.Not.Null);
-            Assert.That(mapping.ContainsKey(&quot;name&quot;), Is.True);
-            Assert.That(mapping.ContainsKey(&quot;extras&quot;), Is.True);
-
-            var extras = mapping[&quot;extras&quot;] as YamlSequence;
-
-            Assert.That(extras, Is.Not.Null);
-            Assert.That(extras.Count, Is.EqualTo(1));
+            var map = result[0] as YamlMapping;
 
-            mapping = extras[0] as YamlMapping;
-
-            Assert.That(mapping, Is.Not.Null);
-            Assert.That(mapping.ContainsKey(&quot;mirror2&quot;), Is.Not.Null);
-            Assert.That(mapping[&quot;mirror2&quot;].ToString(), Is.EqualTo(&quot;one&quot;));
+            Assert.That(result[&quot;good_people&quot;][0][&quot;extras&quot;][0][&quot;mirror2&quot;].ToString(), Is.EqualTo(&quot;one&quot;));
         }
 
         [Test]
@@ -98,39 +54,8 @@ namespace YaYAML.Tests
                 &quot;          - two&quot;,
                 &quot;  - name: Sara&quot;);
 
-            var map = result.Items[0] as YamlMapping;
-
-            Assert.That(map, Is.Not.Null);
-            Assert.That(map.ContainsKey(&quot;good_people&quot;), Is.True,
-                &quot;Expected key 'good_people'&quot;);
-
-            var good_people = map[&quot;good_people&quot;] as YamlSequence;
-
-            Assert.That(good_people, Is.Not.Null);
-            Assert.That(good_people.Count, Is.EqualTo(2));
-
-            var mapping = good_people[0] as YamlMapping;
-
-            Assert.That(mapping, Is.Not.Null);
-            Assert.That(mapping.ContainsKey(&quot;name&quot;), Is.True);
-            Assert.That(mapping.ContainsKey(&quot;extras&quot;), Is.True);
-
-            var extras = mapping[&quot;extras&quot;] as YamlSequence;
-
-            Assert.That(extras, Is.Not.Null);
-            Assert.That(extras.Count, Is.EqualTo(1));
-
-            mapping = extras[0] as YamlMapping;
-
-            Assert.That(mapping, Is.Not.Null);
-            Assert.That(mapping.ContainsKey(&quot;mirror2&quot;), Is.Not.Null);
-
-            var mirror2Seq = mapping[&quot;mirror2&quot;] as YamlSequence;
-
-            Assert.That(mirror2Seq, Is.Not.Null);
-            Assert.That(mirror2Seq.Count, Is.EqualTo(2));
-            Assert.That(mirror2Seq[0].ToString(), Is.EqualTo(&quot;one&quot;));
-            Assert.That(mirror2Seq[1].ToString(), Is.EqualTo(&quot;two&quot;));
+            Assert.That(result[&quot;good_people&quot;][0][&quot;extras&quot;][0][&quot;mirror2&quot;][0].ToString(), Is.EqualTo(&quot;one&quot;));
+            Assert.That(result[&quot;good_people&quot;][0][&quot;extras&quot;][0][&quot;mirror2&quot;][1].ToString(), Is.EqualTo(&quot;two&quot;));
         }
 
         private void VerifyPerson(YamlMapping mapping, string name, string reason)</diff>
      <filename>Tests/ParsingMappingWithListOfMappings.cs</filename>
    </modified>
    <modified>
      <diff>@@ -12,16 +12,7 @@ namespace YaYAML.Tests
                 &quot;key:&quot;,
                 &quot;  - value&quot;);
 
-            var map = result.Items[0] as YamlMapping;
-
-            Assert.That(map, Is.Not.Null);
-            Assert.That(map.ContainsKey(&quot;key&quot;), Is.True);
-
-            var value = map[&quot;key&quot;] as YamlSequence;
-
-            Assert.That(value, Is.Not.Null);
-            Assert.That(value.Count, Is.EqualTo(1));
-            Assert.That(value[0].ToString(), Is.EqualTo(&quot;value&quot;));
+            Assert.That(result[&quot;key&quot;][0].ToString(), Is.EqualTo(&quot;value&quot;));
         }
 
         [Test]
@@ -32,17 +23,8 @@ namespace YaYAML.Tests
                 &quot;  - value&quot;,
                 &quot;  - another value&quot;);
 
-            var map = result.Items[0] as YamlMapping;
-
-            Assert.That(map, Is.Not.Null);
-            Assert.That(map.ContainsKey(&quot;key&quot;), Is.True);
-
-            var value = map[&quot;key&quot;] as YamlSequence;
-
-            Assert.That(value, Is.Not.Null);
-            Assert.That(value.Count, Is.EqualTo(2));
-            Assert.That(value[0].ToString(), Is.EqualTo(&quot;value&quot;));
-            Assert.That(value[1].ToString(), Is.EqualTo(&quot;another value&quot;));
+            Assert.That(result[&quot;key&quot;][0].ToString(), Is.EqualTo(&quot;value&quot;));
+            Assert.That(result[&quot;key&quot;][1].ToString(), Is.EqualTo(&quot;another value&quot;));
         }
 
         [Test]
@@ -54,24 +36,8 @@ namespace YaYAML.Tests
                 &quot;key2:&quot;,
                 &quot;  - value2&quot;);
 
-            var map = result.Items[0] as YamlMapping;
-
-            Assert.That(map, Is.Not.Null);
-            Assert.That(map.ContainsKey(&quot;key&quot;), Is.True);
-
-            var first = map[&quot;key&quot;] as YamlSequence;
-
-            Assert.That(first, Is.Not.Null);
-            Assert.That(first.Count, Is.EqualTo(1));
-            Assert.That(first[0].ToString(), Is.EqualTo(&quot;value&quot;));
-
-            Assert.That(map.ContainsKey(&quot;key2&quot;), Is.True);
-
-            var second = map[&quot;key2&quot;] as YamlSequence;
-
-            Assert.That(second, Is.Not.Null);
-            Assert.That(second.Count, Is.EqualTo(1));
-            Assert.That(second[0].ToString(), Is.EqualTo(&quot;value2&quot;));
+            Assert.That(result[&quot;key&quot;][0].ToString(), Is.EqualTo(&quot;value&quot;));
+            Assert.That(result[&quot;key2&quot;][0].ToString(), Is.EqualTo(&quot;value2&quot;));
         }
 
         [Test]
@@ -85,26 +51,10 @@ namespace YaYAML.Tests
                  &quot;  - value3&quot;,
                  &quot;  - value4&quot;);
 
-            var map = result.Items[0] as YamlMapping;
-
-            Assert.That(map, Is.Not.Null);
-            Assert.That(map.ContainsKey(&quot;key&quot;), Is.True);
-
-            var first = map[&quot;key&quot;] as YamlSequence;
-
-            Assert.That(first, Is.Not.Null);
-            Assert.That(first.Count, Is.EqualTo(2));
-            Assert.That(first[0].ToString(), Is.EqualTo(&quot;value&quot;));
-            Assert.That(first[1].ToString(), Is.EqualTo(&quot;value2&quot;));
-
-            Assert.That(map.ContainsKey(&quot;key2&quot;), Is.True);
-
-            var second = map[&quot;key2&quot;] as YamlSequence;
-
-            Assert.That(second, Is.Not.Null);
-            Assert.That(second.Count, Is.EqualTo(2));
-            Assert.That(second[0].ToString(), Is.EqualTo(&quot;value3&quot;));
-            Assert.That(second[1].ToString(), Is.EqualTo(&quot;value4&quot;));
+            Assert.That(result[&quot;key&quot;][0].ToString(), Is.EqualTo(&quot;value&quot;));
+            Assert.That(result[&quot;key&quot;][1].ToString(), Is.EqualTo(&quot;value2&quot;));
+            Assert.That(result[&quot;key2&quot;][0].ToString(), Is.EqualTo(&quot;value3&quot;));
+            Assert.That(result[&quot;key2&quot;][1].ToString(), Is.EqualTo(&quot;value4&quot;));
         }
     }
 }
\ No newline at end of file</diff>
      <filename>Tests/ParsingMappingsWithSequencesAsValues.cs</filename>
    </modified>
    <modified>
      <diff>@@ -11,16 +11,7 @@ namespace YaYAML.Tests
             var result = Parse&lt;YamlDocument&gt;(x =&gt; x.Document,
                 &quot;- name: first&quot;);
 
-            var seq = result.Items[0] as YamlSequence;
-
-            Assert.That(seq, Is.Not.Null);
-            Assert.That(seq.Count, Is.EqualTo(1));
-
-            var map = seq[0] as YamlMapping;
-
-            Assert.That(map, Is.Not.Null);
-            Assert.That(map.ContainsKey(&quot;name&quot;), Is.True);
-            Assert.That(map[&quot;name&quot;].ToString(), Is.EqualTo(&quot;first&quot;));
+            Assert.That(result[0][&quot;name&quot;].ToString(), Is.EqualTo(&quot;first&quot;));
         }
 
         [Test]
@@ -30,18 +21,8 @@ namespace YaYAML.Tests
                 &quot;- name: first&quot;,
                 &quot;  value: test&quot;);
 
-            var seq = result.Items[0] as YamlSequence;
-
-            Assert.That(seq, Is.Not.Null);
-            Assert.That(seq.Count, Is.EqualTo(1));
-
-            var map = seq[0] as YamlMapping;
-
-            Assert.That(map, Is.Not.Null);
-            Assert.That(map.ContainsKey(&quot;name&quot;), Is.True);
-            Assert.That(map.ContainsKey(&quot;value&quot;), Is.True);
-            Assert.That(map[&quot;name&quot;].ToString(), Is.EqualTo(&quot;first&quot;));
-            Assert.That(map[&quot;value&quot;].ToString(), Is.EqualTo(&quot;test&quot;));
+            Assert.That(result[0][&quot;name&quot;].ToString(), Is.EqualTo(&quot;first&quot;));
+            Assert.That(result[0][&quot;value&quot;].ToString(), Is.EqualTo(&quot;test&quot;));
         }
 
         [Test]
@@ -51,22 +32,8 @@ namespace YaYAML.Tests
                 &quot;- name: first&quot;,
                 &quot;- name: second&quot;);
 
-            var seq = result.Items[0] as YamlSequence;
-
-            Assert.That(seq, Is.Not.Null);
-            Assert.That(seq.Count, Is.EqualTo(2));
-
-            var first = seq[0] as YamlMapping;
-
-            Assert.That(first, Is.Not.Null);
-            Assert.That(first.ContainsKey(&quot;name&quot;), Is.True);
-            Assert.That(first[&quot;name&quot;].ToString(), Is.EqualTo(&quot;first&quot;));
-
-            var second = seq[1] as YamlMapping;
-
-            Assert.That(second, Is.Not.Null);
-            Assert.That(second.ContainsKey(&quot;name&quot;), Is.True);
-            Assert.That(second[&quot;name&quot;].ToString(), Is.EqualTo(&quot;second&quot;));
+            Assert.That(result[0][&quot;name&quot;].ToString(), Is.EqualTo(&quot;first&quot;));
+            Assert.That(result[1][&quot;name&quot;].ToString(), Is.EqualTo(&quot;second&quot;));
         }
 
         [Test]
@@ -78,25 +45,10 @@ namespace YaYAML.Tests
                 &quot;- name: second&quot;,
                 &quot;  value: test2&quot;);
 
-            var seq = result.Items[0] as YamlSequence;
-
-            Assert.That(seq, Is.Not.Null);
-            Assert.That(seq.Count, Is.EqualTo(2));
-
-            var first = seq[0] as YamlMapping;
-
-            Assert.That(first, Is.Not.Null);
-            Assert.That(first.ContainsKey(&quot;name&quot;), Is.True);
-            Assert.That(first.ContainsKey(&quot;value&quot;), Is.True);
-            Assert.That(first[&quot;name&quot;].ToString(), Is.EqualTo(&quot;first&quot;));
-            Assert.That(first[&quot;value&quot;].ToString(), Is.EqualTo(&quot;test&quot;));
-
-            var second = seq[1] as YamlMapping;
-
-            Assert.That(second, Is.Not.Null);
-            Assert.That(second.ContainsKey(&quot;name&quot;), Is.True);
-            Assert.That(second.ContainsKey(&quot;value&quot;), Is.True);
-            Assert.That(second[&quot;value&quot;].ToString(), Is.EqualTo(&quot;test2&quot;));
+            Assert.That(result[0][&quot;name&quot;].ToString(), Is.EqualTo(&quot;first&quot;));
+            Assert.That(result[0][&quot;value&quot;].ToString(), Is.EqualTo(&quot;test&quot;));
+            Assert.That(result[1][&quot;name&quot;].ToString(), Is.EqualTo(&quot;second&quot;));
+            Assert.That(result[1][&quot;value&quot;].ToString(), Is.EqualTo(&quot;test2&quot;));
         }
 
         [Test]
@@ -107,20 +59,8 @@ namespace YaYAML.Tests
                 &quot;    - one&quot;,
                 &quot;    - two&quot;);
 
-            var seq = result.Items[0] as YamlSequence;
-
-            Assert.That(seq, Is.Not.Null);
-            Assert.That(seq.Count, Is.EqualTo(1));
-
-            var first = seq[0] as YamlMapping;
-
-            Assert.That(first, Is.Not.Null);
-            Assert.That(first.ContainsKey(&quot;value&quot;), Is.True);
-
-            var seq2 = first[&quot;value&quot;] as YamlSequence;
-
-            Assert.That(seq2, Is.Not.Null);
-            Assert.That(seq2.Count, Is.EqualTo(2));
+            Assert.That(result[0][&quot;value&quot;][0].ToString(), Is.EqualTo(&quot;one&quot;));
+            Assert.That(result[0][&quot;value&quot;][1].ToString(), Is.EqualTo(&quot;two&quot;));
         }
     }
 }
\ No newline at end of file</diff>
      <filename>Tests/ParsingSequencesOfMappings.cs</filename>
    </modified>
    <modified>
      <diff>@@ -56,7 +56,6 @@
     &lt;Compile Include=&quot;AbstractParserTestFixture.cs&quot; /&gt;
     &lt;Compile Include=&quot;ParsingFlatMappings.cs&quot; /&gt;
     &lt;Compile Include=&quot;ParsingFlatSequences.cs&quot; /&gt;
-    &lt;Compile Include=&quot;ParsingFullDocuments.cs&quot; /&gt;
     &lt;Compile Include=&quot;ParsingListOfMappingsWithListsAsValues.cs&quot; /&gt;
     &lt;Compile Include=&quot;ParsingMappingsWithSequencesAsValues.cs&quot; /&gt;
     &lt;Compile Include=&quot;ParsingMappingWithListOfMappings.cs&quot; /&gt;</diff>
      <filename>Tests/Tests.csproj</filename>
    </modified>
    <modified>
      <diff>@@ -18,12 +18,8 @@ namespace YaYAML.Tests
             var yaml = new Yaml();
             var parsed = yaml.ParseText(content);
 
-            Assert.That(parsed, Is.Not.Null);
-            Assert.That(parsed.Items.Count, Is.EqualTo(1));
-            Assert.That(parsed.Items[0], Is.TypeOf&lt;YamlSequence&gt;());
-
-            var seq = (YamlSequence)parsed.Items[0];
-            Assert.That(seq.Count, Is.EqualTo(2));
+            Assert.That(parsed[0].ToString(), Is.EqualTo(&quot;hello&quot;));
+            Assert.That(parsed[1].ToString(), Is.EqualTo(&quot;there&quot;));
         }
 
         [Test]
@@ -32,12 +28,8 @@ namespace YaYAML.Tests
             var yaml = new Yaml();
             var parsed = yaml.ParseFile(@&quot;Resources\Sample.yaml&quot;);
 
-            Assert.That(parsed, Is.Not.Null);
-            Assert.That(parsed.Items.Count, Is.EqualTo(1));
-            Assert.That(parsed.Items[0], Is.TypeOf&lt;YamlSequence&gt;());
-
-            var seq = (YamlSequence)parsed.Items[0];
-            Assert.That(seq.Count, Is.EqualTo(2));
+            Assert.That(parsed[0].ToString(), Is.EqualTo(&quot;hello&quot;));
+            Assert.That(parsed[1].ToString(), Is.EqualTo(&quot;there&quot;));
         }
 
         [Test]
@@ -46,29 +38,12 @@ namespace YaYAML.Tests
             var yaml = new Yaml();
             var parsed = yaml.ParseFile(@&quot;Resources\NestedSample.yaml&quot;);
 
-            Assert.That(parsed, Is.Not.Null);
-
-            // container
-            Assert.That(parsed.Items.Count, Is.EqualTo(1));
-
-            var seq = parsed.Items[0] as YamlSequence;
-
-            Assert.That(seq, Is.Not.Null);
-            Assert.That(seq.Count, Is.EqualTo(2));
-
-            var first = seq[0] as YamlMapping;
-
-            Assert.That(first, Is.Not.Null);
-            Assert.That(first.ContainsKey(&quot;name&quot;), Is.True);
-            Assert.That(first.ContainsKey(&quot;age&quot;), Is.True);
-            Assert.That(first.ContainsKey(&quot;phones&quot;), Is.True);
-
-            ValidatePersonYaml(seq[0] as YamlMapping, &quot;James&quot;, &quot;23&quot;, new[]
+            ValidatePersonYaml(parsed[0] as YamlMapping, &quot;James&quot;, &quot;23&quot;, new[]
             {
                 &quot;01234 432123&quot;,
                 &quot;01234 455674&quot;
             });
-            ValidatePersonYaml(seq[1] as YamlMapping, &quot;Sara&quot;, &quot;23&quot;, new[]
+            ValidatePersonYaml(parsed[1] as YamlMapping, &quot;Sara&quot;, &quot;23&quot;, new[]
             {
                 &quot;03323 412314&quot;,
                 &quot;03432 885443&quot;</diff>
      <filename>Tests/YamlParserTests.cs</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,8 @@
+using System.Collections.Generic;
+
 namespace YaYAML
 {
     public interface IYamlEntity
+        : IEnumerable&lt;IYamlEntity&gt;, IIndexable&lt;string, IYamlEntity&gt;, IIndexable&lt;int, IYamlEntity&gt;
     {}
 }
\ No newline at end of file</diff>
      <filename>YaYAML/IYamlEntity.cs</filename>
    </modified>
    <modified>
      <diff>@@ -53,6 +53,7 @@
     &lt;Reference Include=&quot;System.Xml&quot; /&gt;
   &lt;/ItemGroup&gt;
   &lt;ItemGroup&gt;
+    &lt;Compile Include=&quot;IIndexable.cs&quot; /&gt;
     &lt;Compile Include=&quot;IYamlEntity.cs&quot; /&gt;
     &lt;Compile Include=&quot;Parsing\YamlParser.cs&quot; /&gt;
     &lt;Compile Include=&quot;Yaml.cs&quot; /&gt;</diff>
      <filename>YaYAML/YaYAML.csproj</filename>
    </modified>
    <modified>
      <diff>@@ -1,16 +1,36 @@
+using System.Collections;
 using System.Collections.Generic;
 
 namespace YaYAML
 {
-    public class YamlDocument
+    public class YamlDocument : IYamlEntity
     {
+        private readonly IYamlEntity entity;
+
         public YamlDocument(IYamlEntity entity)
         {
             // this is a bit pants
-            Items = new List&lt;IYamlEntity&gt;();
-            Items.Add(entity);
+            this.entity = entity;
+        }
+
+        public IEnumerator&lt;IYamlEntity&gt; GetEnumerator()
+        {
+            return entity.GetEnumerator();
+        }
+
+        IEnumerator IEnumerable.GetEnumerator()
+        {
+            return GetEnumerator();
+        }
+
+        public IYamlEntity this[string key]
+        {
+            get { return entity[key]; }
         }
 
-        public IList&lt;IYamlEntity&gt; Items { get; private set; }
+        public IYamlEntity this[int key]
+        {
+            get { return entity[key]; }
+        }
     }
 }
\ No newline at end of file</diff>
      <filename>YaYAML/YamlDocument.cs</filename>
    </modified>
    <modified>
      <diff>@@ -25,6 +25,11 @@ namespace YaYAML
             }
         }
 
+        IEnumerator&lt;IYamlEntity&gt; IEnumerable&lt;IYamlEntity&gt;.GetEnumerator()
+        {
+            return internalDictionary.Values.GetEnumerator();
+        }
+
         public IEnumerator&lt;KeyValuePair&lt;string, IYamlEntity&gt;&gt; GetEnumerator()
         {
             return internalDictionary.GetEnumerator();
@@ -110,5 +115,10 @@ namespace YaYAML
         {
             return GetEnumerator();
         }
+
+        IYamlEntity IIndexable&lt;int, IYamlEntity&gt;.this[int index]
+        {
+            get { return new List&lt;IYamlEntity&gt;(internalDictionary.Values)[index]; }
+        }
     }
 }
\ No newline at end of file</diff>
      <filename>YaYAML/YamlMapping.cs</filename>
    </modified>
    <modified>
      <diff>@@ -80,5 +80,10 @@ namespace YaYAML
         {
             return GetEnumerator();
         }
+
+        IYamlEntity IIndexable&lt;string, IYamlEntity&gt;.this[string key]
+        {
+            get { return null; }
+        }
     }
 }
\ No newline at end of file</diff>
      <filename>YaYAML/YamlSequence.cs</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,7 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
 namespace YaYAML
 {
     public class YamlText : IYamlEntity
@@ -9,9 +13,29 @@ namespace YaYAML
             this.content = content;
         }
 
+        public IEnumerator&lt;IYamlEntity&gt; GetEnumerator()
+        {
+            yield return null;
+        }
+
         public override string ToString()
         {
             return content;
         }
+
+        IEnumerator IEnumerable.GetEnumerator()
+        {
+            return GetEnumerator();
+        }
+
+        IYamlEntity IIndexable&lt;string, IYamlEntity&gt;.this[string key]
+        {
+            get { return null; }
+        }
+
+        IYamlEntity IIndexable&lt;int, IYamlEntity&gt;.this[int key]
+        {
+            get { return null; }
+        }
     }
 }
\ No newline at end of file</diff>
      <filename>YaYAML/YamlText.cs</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>66a76c93aeb6fe08679876a8c77f828619f53b06</id>
    </parent>
  </parents>
  <author>
    <name>James Gregory</name>
    <email>james@jagregory.com</email>
  </author>
  <url>http://github.com/jagregory/yayaml/commit/05ad80fe881b4076e7263103a2aa8ffff73d415a</url>
  <id>05ad80fe881b4076e7263103a2aa8ffff73d415a</id>
  <committed-date>2008-11-02T18:27:04-08:00</committed-date>
  <authored-date>2008-11-02T18:27:04-08:00</authored-date>
  <message>Updated the object-model a bit so it can be used a bit more &quot;loosely&quot;. It's much easier to use if you know the file structure to not have to dance around types.</message>
  <tree>7ac4da133878e61432f21277b20f7cfa96764581</tree>
  <committer>
    <name>James Gregory</name>
    <email>james@jagregory.com</email>
  </committer>
</commit>
