public static string Dump(ImmutableFour value)
        {
            var assistant = new AssistantDumper();

            Dump(assistant, value);
            return(assistant.ToString());
        }
        static internal ImmutableFour Create(uint position)
        {
            var result = new ImmutableFour();

            Populate(result, position);
            return(result);
        }
        static internal void Dump(AssistantDumper assistant, ImmutableFour value, bool withSeparator = false)
        {
            assistant.IncrementDepth();
            if (assistant.MaximumDepthExceeded())
            {
                return;
            }

            assistant.AddStartObject();
            assistant.AddType("CSharpRefImpl.CSharpModel.ImmutableFour", true /*withSeparator*/);
            if (value == null)
            {
                assistant.Add("data", "<null>");
                assistant.AddEndObject();
                return;
            }

            assistant.AddKey("data");
            assistant.AddPairSeparator();
            assistant.AddStartObject();
            assistant.Add("Prop0", value.Prop0, true /*withSeparator*/);
            assistant.Add("Prop1", value.Prop1, true /*withSeparator*/);
            assistant.AddKey("Prop2");
            assistant.AddPairSeparator();
            CSharpRefImpl.CSharpModel.ComplexBuiltinsDumper.Dump(assistant, value.Prop2, true /*withSeparator*/);
            assistant.AddKey("Prop3");
            assistant.AddPairSeparator();
            CSharpRefImpl.CSharpModel.ImmutableOnePrimitiveDumper.Dump(assistant, value.Prop3);
            assistant.AddEndObject(); // data
            assistant.AddEndObject(); // main object
            assistant.HandleMemberSeparator(withSeparator);

            assistant.DecrementDepth();
        }
 static internal void Populate(ImmutableFour value, uint position)
 {
     value.Prop0 = AssistantSequenceGenerator.CreateBool(position + 0);
     value.Prop1 = AssistantSequenceGenerator.CreateString(position + 1);
     value.Prop2 = CSharpRefImpl.CSharpModel.ComplexBuiltinsSequenceGenerator.Create(position + 2);
     value.Prop3 = CSharpRefImpl.CSharpModel.ImmutableOnePrimitiveSequenceGenerator.Create(position + 3);
 }