public void Read (TProtocol iprot)
 {
   TField field;
   iprot.ReadStructBegin();
   while (true)
   {
     field = iprot.ReadFieldBegin();
     if (field.Type == TType.Stop) { 
       break;
     }
     switch (field.ID)
     {
       case 1:
         if (field.Type == TType.List) {
           {
             MonsterGroup = new List<MonsterGroup>();
             TList _list0 = iprot.ReadListBegin();
             for( int _i1 = 0; _i1 < _list0.Count; ++_i1)
             {
               MonsterGroup _elem2 = new MonsterGroup();
               _elem2 = new MonsterGroup();
               _elem2.Read(iprot);
               MonsterGroup.Add(_elem2);
             }
             iprot.ReadListEnd();
           }
         } else { 
           TProtocolUtil.Skip(iprot, field.Type);
         }
         break;
       default: 
         TProtocolUtil.Skip(iprot, field.Type);
         break;
     }
     iprot.ReadFieldEnd();
   }
   iprot.ReadStructEnd();
 }
 public List<int> getSingleMonsterGroupIdList(MonsterGroup monsterGroup)
 {
     var _idList = new List<int>();
     addSingleMonsterId(monsterGroup.Arg_A, _idList);
     addSingleMonsterId(monsterGroup.Arg_B, _idList);
     addSingleMonsterId(monsterGroup.Arg_C, _idList);
     return _idList;
 }