public void Read(TProtocol iprot)
    {
        bool   isset_serialized_parts = false;
        TField field;

        iprot.ReadStructBegin();
        while (true)
        {
            field = iprot.ReadFieldBegin();
            if (field.Type == TType.Stop)
            {
                break;
            }
            switch (field.ID)
            {
            case 1:
                if (field.Type == TType.Map)
                {
                    {
                        Serialized_parts = new Dictionary <string, ThriftSerializedObject>();
                        TMap _map218 = iprot.ReadMapBegin();
                        for (int _i219 = 0; _i219 < _map218.Count; ++_i219)
                        {
                            string _key220;
                            ThriftSerializedObject _val221;
                            _key220 = iprot.ReadString();
                            _val221 = new ThriftSerializedObject();
                            _val221.Read(iprot);
                            Serialized_parts[_key220] = _val221;
                        }
                        iprot.ReadMapEnd();
                    }
                    isset_serialized_parts = true;
                }
                else
                {
                    TProtocolUtil.Skip(iprot, field.Type);
                }
                break;

            default:
                TProtocolUtil.Skip(iprot, field.Type);
                break;
            }
            iprot.ReadFieldEnd();
        }
        iprot.ReadStructEnd();
        if (!isset_serialized_parts)
        {
            throw new TProtocolException(TProtocolException.INVALID_DATA);
        }
    }
 public void Read (TProtocol iprot)
 {
   bool isset_serialized_parts = false;
   TField field;
   iprot.ReadStructBegin();
   while (true)
   {
     field = iprot.ReadFieldBegin();
     if (field.Type == TType.Stop) { 
       break;
     }
     switch (field.ID)
     {
       case 1:
         if (field.Type == TType.Map) {
           {
             Serialized_parts = new Dictionary<string, ThriftSerializedObject>();
             TMap _map218 = iprot.ReadMapBegin();
             for( int _i219 = 0; _i219 < _map218.Count; ++_i219)
             {
               string _key220;
               ThriftSerializedObject _val221;
               _key220 = iprot.ReadString();
               _val221 = new ThriftSerializedObject();
               _val221.Read(iprot);
               Serialized_parts[_key220] = _val221;
             }
             iprot.ReadMapEnd();
           }
           isset_serialized_parts = true;
         } else { 
           TProtocolUtil.Skip(iprot, field.Type);
         }
         break;
       default: 
         TProtocolUtil.Skip(iprot, field.Type);
         break;
     }
     iprot.ReadFieldEnd();
   }
   iprot.ReadStructEnd();
   if (!isset_serialized_parts)
     throw new TProtocolException(TProtocolException.INVALID_DATA);
 }