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

            if (__isset.Id)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("Id: ");
                __sb.Append(Id);
            }
            if (Name != null && __isset.Name)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("Name: ");
                __sb.Append(Name);
            }
            if (Description != null && __isset.Description)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("Description: ");
                __sb.Append(Description);
            }
            if (KeyValueMaps != null && __isset.KeyValueMaps)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("KeyValueMaps: ");
                __sb.Append(KeyValueMaps);
            }
            if (__isset.Transition)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("Transition: ");
                __sb.Append(Transition);
            }
            if (TransitionProbDistribution != null && __isset.TransitionProbDistribution)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("TransitionProbDistribution: ");
                __sb.Append(TransitionProbDistribution == null ? "<null>" : TransitionProbDistribution.ToString());
            }
            if (FromStates != null && __isset.FromStates)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("FromStates: ");
                __sb.Append(FromStates);
            }
            if (ToStates != null && __isset.ToStates)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("ToStates: ");
                __sb.Append(ToStates);
            }
            __sb.Append(")");
            return(__sb.ToString());
        }
 public void Write(TProtocol oprot)
 {
     oprot.IncrementRecursionDepth();
     try
     {
         TStruct struc = new TStruct("TDDITransition");
         oprot.WriteStructBegin(struc);
         TField field = new TField();
         if (__isset.Id)
         {
             field.Name = "Id";
             field.Type = TType.I64;
             field.ID   = 1;
             oprot.WriteFieldBegin(field);
             oprot.WriteI64(Id);
             oprot.WriteFieldEnd();
         }
         if (Name != null && __isset.Name)
         {
             field.Name = "Name";
             field.Type = TType.String;
             field.ID   = 2;
             oprot.WriteFieldBegin(field);
             oprot.WriteString(Name);
             oprot.WriteFieldEnd();
         }
         if (Description != null && __isset.Description)
         {
             field.Name = "Description";
             field.Type = TType.String;
             field.ID   = 3;
             oprot.WriteFieldBegin(field);
             oprot.WriteString(Description);
             oprot.WriteFieldEnd();
         }
         if (KeyValueMaps != null && __isset.KeyValueMaps)
         {
             field.Name = "KeyValueMaps";
             field.Type = TType.List;
             field.ID   = 4;
             oprot.WriteFieldBegin(field);
             {
                 oprot.WriteListBegin(new TList(TType.Struct, KeyValueMaps.Count));
                 foreach (TDDIKeyValueMap _iter625 in KeyValueMaps)
                 {
                     _iter625.Write(oprot);
                 }
                 oprot.WriteListEnd();
             }
             oprot.WriteFieldEnd();
         }
         if (__isset.Transition)
         {
             field.Name = "Transition";
             field.Type = TType.Double;
             field.ID   = 5;
             oprot.WriteFieldBegin(field);
             oprot.WriteDouble(Transition);
             oprot.WriteFieldEnd();
         }
         if (TransitionProbDistribution != null && __isset.TransitionProbDistribution)
         {
             field.Name = "TransitionProbDistribution";
             field.Type = TType.Struct;
             field.ID   = 6;
             oprot.WriteFieldBegin(field);
             TransitionProbDistribution.Write(oprot);
             oprot.WriteFieldEnd();
         }
         if (FromStates != null && __isset.FromStates)
         {
             field.Name = "FromStates";
             field.Type = TType.List;
             field.ID   = 7;
             oprot.WriteFieldBegin(field);
             {
                 oprot.WriteListBegin(new TList(TType.Struct, FromStates.Count));
                 foreach (TDDIStateRef _iter626 in FromStates)
                 {
                     _iter626.Write(oprot);
                 }
                 oprot.WriteListEnd();
             }
             oprot.WriteFieldEnd();
         }
         if (ToStates != null && __isset.ToStates)
         {
             field.Name = "ToStates";
             field.Type = TType.List;
             field.ID   = 8;
             oprot.WriteFieldBegin(field);
             {
                 oprot.WriteListBegin(new TList(TType.Struct, ToStates.Count));
                 foreach (TDDIStateRef _iter627 in ToStates)
                 {
                     _iter627.Write(oprot);
                 }
                 oprot.WriteListEnd();
             }
             oprot.WriteFieldEnd();
         }
         oprot.WriteFieldStop();
         oprot.WriteStructEnd();
     }
     finally
     {
         oprot.DecrementRecursionDepth();
     }
 }