public void read(org.apache.thrift.protocol.TProtocol iprot, put_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TField schemeField;
        iprot.readStructBegin();
        while (true)
        {
          schemeField = iprot.readFieldBegin();
          if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
            break;
          }
          switch (schemeField.id) {
            case 1: // INTERFACE_NAME
              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                struct.interfaceName = iprot.readString();
                struct.setInterfaceNameIsSet(true);
              } else { 
                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
              }
              break;
            case 2: // IMPL_CLASS_NAME
              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                struct.implClassName = iprot.readString();
                struct.setImplClassNameIsSet(true);
              } else { 
                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
              }
              break;
            case 3: // CLASS_NAMES
              if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                {
                  org.apache.thrift.protocol.TList _list0 = iprot.readListBegin();
                  struct.classNames = new ArrayList<String>(_list0.size);
                  for (int _i1 = 0; _i1 < _list0.size; ++_i1)
                  {
                    String _elem2; // required
                    _elem2 = iprot.readString();
                    struct.classNames.add(_elem2);
                  }
                  iprot.readListEnd();
                }
                struct.setClassNamesIsSet(true);
              } else { 
                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
              }
              break;
            case 4: // CLASSES
              if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                {
                  org.apache.thrift.protocol.TList _list3 = iprot.readListBegin();
                  struct.classes = new ArrayList<ByteBuffer>(_list3.size);
                  for (int _i4 = 0; _i4 < _list3.size; ++_i4)
                  {
                    ByteBuffer _elem5; // required
                    _elem5 = iprot.readBinary();
                    struct.classes.add(_elem5);
                  }
                  iprot.readListEnd();
                }
                struct.setClassesIsSet(true);
              } else { 
                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
              }
              break;
            default:
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
          }
          iprot.readFieldEnd();
        }
        iprot.readStructEnd();

        // check for required fields of primitive type, which can't be checked in the validate method
        struct.validate();
      }