public static void SerializeSnapshot(global::Improbable.TestSchema.RecursiveComponent.Snapshot snapshot, global::Improbable.Worker.CInterop.SchemaObject obj)
            {
                global::Improbable.TestSchema.TypeA.Serialization.Serialize(snapshot.A, obj.AddObject(1));

                global::Improbable.TestSchema.TypeB.Serialization.Serialize(snapshot.B, obj.AddObject(2));

                global::Improbable.TestSchema.TypeC.Serialization.Serialize(snapshot.C, obj.AddObject(3));
            }
            public static global::Improbable.TestSchema.RecursiveComponent.Snapshot DeserializeSnapshot(global::Improbable.Worker.CInterop.SchemaObject obj)
            {
                var component = new global::Improbable.TestSchema.RecursiveComponent.Snapshot();

                component.A = global::Improbable.TestSchema.TypeA.Serialization.Deserialize(obj.GetObject(1));

                component.B = global::Improbable.TestSchema.TypeB.Serialization.Deserialize(obj.GetObject(2));

                component.C = global::Improbable.TestSchema.TypeC.Serialization.Deserialize(obj.GetObject(3));

                return(component);
            }
            public static void ApplyUpdate(global::Improbable.Worker.CInterop.SchemaComponentUpdate updateObj, ref global::Improbable.TestSchema.RecursiveComponent.Snapshot snapshot)
            {
                var obj = updateObj.GetFields();

                if (obj.GetObjectCount(1) == 1)
                {
                    snapshot.A = global::Improbable.TestSchema.TypeA.Serialization.Deserialize(obj.GetObject(1));
                }

                if (obj.GetObjectCount(2) == 1)
                {
                    snapshot.B = global::Improbable.TestSchema.TypeB.Serialization.Deserialize(obj.GetObject(2));
                }

                if (obj.GetObjectCount(3) == 1)
                {
                    snapshot.C = global::Improbable.TestSchema.TypeC.Serialization.Deserialize(obj.GetObject(3));
                }
            }