public override string ToString()
        {
            StringBuilder __sb    = new StringBuilder("SomeUnion(");
            bool          __first = true;

            if (Map_thing != null && __isset.map_thing)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("Map_thing: ");
                __sb.Append(Map_thing);
            }
            if (String_thing != null && __isset.string_thing)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("String_thing: ");
                __sb.Append(String_thing);
            }
            if (__isset.i32_thing)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("I32_thing: ");
                __sb.Append(I32_thing);
            }
            if (Xtruct_thing != null && __isset.xtruct_thing)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("Xtruct_thing: ");
                __sb.Append(Xtruct_thing == null ? "<null>" : Xtruct_thing.ToString());
            }
            if (Insanity_thing != null && __isset.insanity_thing)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("Insanity_thing: ");
                __sb.Append(Insanity_thing == null ? "<null>" : Insanity_thing.ToString());
            }
            __sb.Append(")");
            return(__sb.ToString());
        }
 public void Write(TProtocol oprot)
 {
     oprot.IncrementRecursionDepth();
     try
     {
         TStruct struc = new TStruct("SomeUnion");
         oprot.WriteStructBegin(struc);
         TField field = new TField();
         if (Map_thing != null && __isset.map_thing)
         {
             field.Name = "map_thing";
             field.Type = TType.Map;
             field.ID   = 1;
             oprot.WriteFieldBegin(field);
             {
                 oprot.WriteMapBegin(new TMap(TType.I32, TType.I64, Map_thing.Count));
                 foreach (Numberz _iter48 in Map_thing.Keys)
                 {
                     oprot.WriteI32((int)_iter48);
                     oprot.WriteI64(Map_thing[_iter48]);
                 }
                 oprot.WriteMapEnd();
             }
             oprot.WriteFieldEnd();
         }
         if (String_thing != null && __isset.string_thing)
         {
             field.Name = "string_thing";
             field.Type = TType.String;
             field.ID   = 2;
             oprot.WriteFieldBegin(field);
             oprot.WriteString(String_thing);
             oprot.WriteFieldEnd();
         }
         if (__isset.i32_thing)
         {
             field.Name = "i32_thing";
             field.Type = TType.I32;
             field.ID   = 3;
             oprot.WriteFieldBegin(field);
             oprot.WriteI32(I32_thing);
             oprot.WriteFieldEnd();
         }
         if (Xtruct_thing != null && __isset.xtruct_thing)
         {
             field.Name = "xtruct_thing";
             field.Type = TType.Struct;
             field.ID   = 4;
             oprot.WriteFieldBegin(field);
             Xtruct_thing.Write(oprot);
             oprot.WriteFieldEnd();
         }
         if (Insanity_thing != null && __isset.insanity_thing)
         {
             field.Name = "insanity_thing";
             field.Type = TType.Struct;
             field.ID   = 5;
             oprot.WriteFieldBegin(field);
             Insanity_thing.Write(oprot);
             oprot.WriteFieldEnd();
         }
         oprot.WriteFieldStop();
         oprot.WriteStructEnd();
     }
     finally
     {
         oprot.DecrementRecursionDepth();
     }
 }