public static void testPartialDeserialize(
     TProtocolFactory protocolFactory,
     TBase input,
     TBase output,
     TBase expected,
     TFieldIdEnum... fieldIdPath)
     throws TException {
   byte[] record = new TSerializer(protocolFactory).serialize(input);
   TDeserializer deserializer = new TDeserializer(protocolFactory);
   for (int i = 0; i < 2; i++) {
     TBase outputCopy = output.deepCopy();
     deserializer.partialDeserialize(outputCopy, record, fieldIdPath);
     assertEquals(
         "on attempt "
             + i
             + ", with "
             + protocolFactory.toString()
             + ", expected "
             + expected
             + " but got "
             + outputCopy,
         expected,
         outputCopy);
   }
 }
 protected void receiveBase(TBase result, String methodName) throws TException {
   TMessage msg = iprot_.readMessageBegin();
   if (msg.type == TMessageType.EXCEPTION) {
     TApplicationException x = TApplicationException.read(iprot_);
     iprot_.readMessageEnd();
     throw x;
   }
   if (msg.seqid != seqid_) {
     throw new TApplicationException(
         TApplicationException.BAD_SEQUENCE_ID, methodName + " failed: out of sequence response");
   }
   result.read(iprot_);
   iprot_.readMessageEnd();
 }
 protected void sendBase(String methodName, TBase args) throws TException {
   oprot_.writeMessageBegin(new TMessage(methodName, TMessageType.CALL, ++seqid_));
   args.write(oprot_);
   oprot_.writeMessageEnd();
   oprot_.getTransport().flush();
 }