public async Task PopulatesDocumentAndKey()
            {
                // Given
                TestDocument document = new TestDocument(_jsonContent);
                ParseJson    json     = new ParseJson("Foo", true);

                // When
                ImmutableArray <TestDocument> results = await ExecuteAsync(document, json);

                // Then
                TestDocument result = results.ShouldHaveSingleItem();

                result.Count.ShouldBe(9); // Includes property metadata
                result["Email"].ShouldBe("*****@*****.**");
                result["Active"].ShouldBe(true);
                result["CreatedDate"].ShouldBe("2013-01-20T00:00:00Z");
                result["Roles"].ShouldBe(new object[] { "User", "Admin", 11 });
                IMetadata nestedObject = result.GetMetadata("Description");

                nestedObject.ShouldNotBeNull();
                nestedObject["Height"].ShouldBe(5);
                IMetadata metadata = result.GetMetadata("Foo");

                metadata.ShouldNotBeNull();
                metadata["Email"].ShouldBe("*****@*****.**");
                metadata["Active"].ShouldBe(true);
                metadata["CreatedDate"].ShouldBe("2013-01-20T00:00:00Z");
                metadata["Roles"].ShouldBe(new object[] { "User", "Admin", 11 });
                nestedObject = metadata.GetMetadata("Description");
                nestedObject.ShouldNotBeNull();
                nestedObject["Height"].ShouldBe(5);
            }