public void Copies_pairs_with_predicate_key_and_dynamic_objects_value()
        {
            var g = new Graph();

            g.LoadFromString(@"
<urn:s> <urn:s> <urn:s> . # 1.1
<urn:s> <urn:s> <urn:p> . # 1.2
<urn:s> <urn:s> <urn:o> . # 1.3
<urn:s> <urn:p> <urn:s> . # 2.1
<urn:s> <urn:p> <urn:p> . # 2.2
<urn:s> <urn:p> <urn:o> . # 2.3
<urn:s> <urn:o> <urn:s> . # 3.1
<urn:s> <urn:o> <urn:p> . # 3.2
<urn:s> <urn:o> <urn:o> . # 3.3
<urn:p> <urn:s> <urn:s> .
<urn:p> <urn:s> <urn:p> .
<urn:p> <urn:s> <urn:o> .
<urn:p> <urn:p> <urn:s> .
<urn:p> <urn:p> <urn:p> .
<urn:p> <urn:p> <urn:o> .
<urn:p> <urn:o> <urn:s> .
<urn:p> <urn:o> <urn:p> .
<urn:p> <urn:o> <urn:o> .
<urn:o> <urn:s> <urn:s> .
<urn:o> <urn:s> <urn:p> .
<urn:o> <urn:s> <urn:o> .
<urn:o> <urn:p> <urn:s> .
<urn:o> <urn:p> <urn:p> .
<urn:o> <urn:p> <urn:o> .
<urn:o> <urn:o> <urn:s> .
<urn:o> <urn:o> <urn:p> .
<urn:o> <urn:o> <urn:o> .
");

            var s     = g.CreateUriNode(UriFactory.Create("urn:s"));
            var p     = g.CreateUriNode(UriFactory.Create("urn:p"));
            var o     = g.CreateUriNode(UriFactory.Create("urn:o"));
            var d     = new DynamicNode(s) as IDictionary <string, object>;
            var array = new KeyValuePair <string, object> [5];
            var spo   = new[] { s, p, o };

            void isEmpty(KeyValuePair <string, object> actual)
            {
                Assert.Equal(default(KeyValuePair <string, object>), actual);
            }

            Action <KeyValuePair <string, object> > isSPOWith(string expected)
            {
                return(actual =>
                {
                    Assert.Equal(expected, actual.Key);
                    Assert.IsType <DynamicObjectCollection>(actual.Value);
                    Assert.Equal(spo, actual.Value);
                });
            }

            d.CopyTo(array, 1);

            Assert.Collection(
                array,
                isEmpty,
                isSPOWith(s.Uri.AbsoluteUri),
                isSPOWith(p.Uri.AbsoluteUri),
                isSPOWith(o.Uri.AbsoluteUri),
                isEmpty);
        }