public void RoundtripSimpleExpando()
        {
            var expando = new ExpandoObject();
            dynamic source = expando;
            var birthDate = T.Date.Parse("1972-11-30");

            source.name = "Ewout";
            source.active = true;
            source.nested = new ExpandoObject();
            source.nested.data = "Wednesday";
            source.identifier = new List<object> { 104231m, 2 };
            source.birthDate = birthDate;

            dynamic contact1 = new ExpandoObject();
            contact1.name = "Marleen";
            source.contact = new List<dynamic> { contact1 };

            var memory = PrimitiveObjectFormatterCore.SerializeToMemory((object)source);
            dynamic parsed = PrimitiveObjectFormatterCore.Deserialize(memory);

            Assert.AreEqual("Ewout", parsed.name);
            Assert.AreEqual("Marleen", parsed.contact[0].name);
            Assert.AreEqual("Wednesday", source.nested.data);
            Assert.AreEqual(104231m, parsed.identifier[0]);
            Assert.AreEqual(2, parsed.identifier[1]);
            Assert.AreEqual(birthDate, parsed.birthDate);

            Assert.IsFalse(((IDictionary<string,object>)expando).ContainsKey("doesnotexist"));
            Assert.IsTrue(((IDictionary<string, object>)expando).ContainsKey("name"));
        }
        public async Task TestMethod1()
        {
            var spec = ZipSource.CreateValidationSource();

            var sd = await spec.FindStructureDefinitionForCoreTypeAsync("Patient");
            Assert.IsNotNull(sd);

            var sw = new Stopwatch();

            var te = ElementNode.FromElement(sd.ToTypedElement());

            sw.Start();
            ExpandoObject expando = null;
            for (int i=0; i < 1000; i++)
                expando = te.ToExpando();
            sw.Stop();
            Console.WriteLine($"ToExpando() took {sw.ElapsedMilliseconds / 1000.0} ms");

            ReadOnlyMemory<byte> memory = null;
            sw.Restart();
            for(int i=0; i < 1000; i++)
                memory = PrimitiveObjectFormatterCore.SerializeToMemory(expando);
            sw.Stop();
            Console.WriteLine($"Serializing an expando took {sw.ElapsedMilliseconds / 1000.0} ms");

            object result = null;
            sw.Restart();
            for (int i = 0; i < 1000; i++)
                result = PrimitiveObjectFormatterCore.Deserialize(memory);
            sw.Stop();
            Console.WriteLine($"Deserializing to an expando took {sw.ElapsedMilliseconds / 1000.0} ms");

            dynamic dyn = result;
            Assert.AreEqual("normative", dyn.extension[1].value.value);
        }