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

            if (__isset.type)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("Type: ");
                __sb.Append(Type);
            }
            if (Dir != null && __isset.dir)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("Dir: ");
                __sb.Append(Dir == null ? "<null>" : Dir.ToString());
            }
            if (CollisionPoint != null && __isset.collisionPoint)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("CollisionPoint: ");
                __sb.Append(CollisionPoint == null ? "<null>" : CollisionPoint.ToString());
            }
            if (DestGrid != null && __isset.destGrid)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("DestGrid: ");
                __sb.Append(DestGrid == null ? "<null>" : DestGrid.ToString());
            }
            if (__isset.ballId)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("BallId: ");
                __sb.Append(BallId);
            }
            if (__isset.speed)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("Speed: ");
                __sb.Append(Speed);
            }
            if (__isset.result)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("Result: ");
                __sb.Append(Result);
            }
            if (StartPosition != null && __isset.startPosition)
            {
                if (!__first)
                {
                    __sb.Append(", ");
                }
                __first = false;
                __sb.Append("StartPosition: ");
                __sb.Append(StartPosition == null ? "<null>" : StartPosition.ToString());
            }
            __sb.Append(")");
            return(__sb.ToString());
        }
 public void Write(TProtocol oprot)
 {
     oprot.IncrementRecursionDepth();
     try
     {
         TStruct struc = new TStruct("FireBallResponse");
         oprot.WriteStructBegin(struc);
         TField field = new TField();
         if (__isset.type)
         {
             field.Name = "type";
             field.Type = TType.I32;
             field.ID   = 10;
             oprot.WriteFieldBegin(field);
             oprot.WriteI32(Type);
             oprot.WriteFieldEnd();
         }
         if (Dir != null && __isset.dir)
         {
             field.Name = "dir";
             field.Type = TType.Struct;
             field.ID   = 20;
             oprot.WriteFieldBegin(field);
             Dir.Write(oprot);
             oprot.WriteFieldEnd();
         }
         if (CollisionPoint != null && __isset.collisionPoint)
         {
             field.Name = "collisionPoint";
             field.Type = TType.Struct;
             field.ID   = 30;
             oprot.WriteFieldBegin(field);
             CollisionPoint.Write(oprot);
             oprot.WriteFieldEnd();
         }
         if (DestGrid != null && __isset.destGrid)
         {
             field.Name = "destGrid";
             field.Type = TType.Struct;
             field.ID   = 40;
             oprot.WriteFieldBegin(field);
             DestGrid.Write(oprot);
             oprot.WriteFieldEnd();
         }
         if (__isset.ballId)
         {
             field.Name = "ballId";
             field.Type = TType.I32;
             field.ID   = 50;
             oprot.WriteFieldBegin(field);
             oprot.WriteI32(BallId);
             oprot.WriteFieldEnd();
         }
         if (__isset.speed)
         {
             field.Name = "speed";
             field.Type = TType.Double;
             field.ID   = 60;
             oprot.WriteFieldBegin(field);
             oprot.WriteDouble(Speed);
             oprot.WriteFieldEnd();
         }
         if (__isset.result)
         {
             field.Name = "result";
             field.Type = TType.Byte;
             field.ID   = 70;
             oprot.WriteFieldBegin(field);
             oprot.WriteByte(Result);
             oprot.WriteFieldEnd();
         }
         if (StartPosition != null && __isset.startPosition)
         {
             field.Name = "startPosition";
             field.Type = TType.Struct;
             field.ID   = 80;
             oprot.WriteFieldBegin(field);
             StartPosition.Write(oprot);
             oprot.WriteFieldEnd();
         }
         oprot.WriteFieldStop();
         oprot.WriteStructEnd();
     }
     finally
     {
         oprot.DecrementRecursionDepth();
     }
 }