/**
 * Autogenerated by Thrift Compiler (0.15.0)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */
package com.thrift.example.real.thrift.test;

@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.15.0)", date = "2021-11-12")
public class ThriftTest {

  public interface Iface {

    /**
     * Prints "testVoid()" and returns nothing.
     */
    public void testVoid() throws org.apache.thrift.TException;

    /**
     * Prints 'testString("%s")' with thing as '%s'
     * @param string thing - the string to print
     * @return string - returns the string 'thing'
     * 
     * @param thing
     */
    public java.lang.String testString(java.lang.String thing) throws org.apache.thrift.TException;

    /**
     * Prints 'testBool("%s")' where '%s' with thing as 'true' or 'false'
     * @param bool  thing - the bool data to print
     * @return bool  - returns the bool 'thing'
     * 
     * @param thing
     */
    public boolean testBool(boolean thing) throws org.apache.thrift.TException;

    /**
     * Prints 'testByte("%d")' with thing as '%d'
     * The types i8 and byte are synonyms, use of i8 is encouraged, byte still exists for the sake of compatibility.
     * @param byte thing - the i8/byte to print
     * @return i8 - returns the i8/byte 'thing'
     * 
     * @param thing
     */
    public byte testByte(byte thing) throws org.apache.thrift.TException;

    /**
     * Prints 'testI32("%d")' with thing as '%d'
     * @param i32 thing - the i32 to print
     * @return i32 - returns the i32 'thing'
     * 
     * @param thing
     */
    public int testI32(int thing) throws org.apache.thrift.TException;

    /**
     * Prints 'testI64("%d")' with thing as '%d'
     * @param i64 thing - the i64 to print
     * @return i64 - returns the i64 'thing'
     * 
     * @param thing
     */
    public long testI64(long thing) throws org.apache.thrift.TException;

    /**
     * Prints 'testDouble("%f")' with thing as '%f'
     * @param double thing - the double to print
     * @return double - returns the double 'thing'
     * 
     * @param thing
     */
    public double testDouble(double thing) throws org.apache.thrift.TException;

    /**
     * Prints 'testBinary("%s")' where '%s' is a hex-formatted string of thing's data
     * @param binary  thing - the binary data to print
     * @return binary  - returns the binary 'thing'
     * 
     * @param thing
     */
    public java.nio.ByteBuffer testBinary(java.nio.ByteBuffer thing) throws org.apache.thrift.TException;

    /**
     * Prints 'testStruct("{%s}")' where thing has been formatted into a string of comma separated values
     * @param Xtruct thing - the Xtruct to print
     * @return Xtruct - returns the Xtruct 'thing'
     * 
     * @param thing
     */
    public Xtruct testStruct(Xtruct thing) throws org.apache.thrift.TException;

    /**
     * Prints 'testNest("{%s}")' where thing has been formatted into a string of the nested struct
     * @param Xtruct2 thing - the Xtruct2 to print
     * @return Xtruct2 - returns the Xtruct2 'thing'
     * 
     * @param thing
     */
    public Xtruct2 testNest(Xtruct2 thing) throws org.apache.thrift.TException;

    /**
     * Prints 'testMap("{%s")' where thing has been formatted into a string of 'key => value' pairs
     *  separated by commas and new lines
     * @param map<i32,i32> thing - the map<i32,i32> to print
     * @return map<i32,i32> - returns the map<i32,i32> 'thing'
     * 
     * @param thing
     */
    public java.util.Map<java.lang.Integer,java.lang.Integer> testMap(java.util.Map<java.lang.Integer,java.lang.Integer> thing) throws org.apache.thrift.TException;

    /**
     * Prints 'testStringMap("{%s}")' where thing has been formatted into a string of 'key => value' pairs
     *  separated by commas and new lines
     * @param map<string,string> thing - the map<string,string> to print
     * @return map<string,string> - returns the map<string,string> 'thing'
     * 
     * @param thing
     */
    public java.util.Map<java.lang.String,java.lang.String> testStringMap(java.util.Map<java.lang.String,java.lang.String> thing) throws org.apache.thrift.TException;

    /**
     * Prints 'testSet("{%s}")' where thing has been formatted into a string of values
     *  separated by commas and new lines
     * @param set<i32> thing - the set<i32> to print
     * @return set<i32> - returns the set<i32> 'thing'
     * 
     * @param thing
     */
    public java.util.Set<java.lang.Integer> testSet(java.util.Set<java.lang.Integer> thing) throws org.apache.thrift.TException;

    /**
     * Prints 'testList("{%s}")' where thing has been formatted into a string of values
     *  separated by commas and new lines
     * @param list<i32> thing - the list<i32> to print
     * @return list<i32> - returns the list<i32> 'thing'
     * 
     * @param thing
     */
    public java.util.List<java.lang.Integer> testList(java.util.List<java.lang.Integer> thing) throws org.apache.thrift.TException;

    /**
     * Prints 'testEnum("%d")' where thing has been formatted into its numeric value
     * @param Numberz thing - the Numberz to print
     * @return Numberz - returns the Numberz 'thing'
     * 
     * @param thing
     */
    public Numberz testEnum(Numberz thing) throws org.apache.thrift.TException;

    /**
     * Prints 'testTypedef("%d")' with thing as '%d'
     * @param UserId thing - the UserId to print
     * @return UserId - returns the UserId 'thing'
     * 
     * @param thing
     */
    public long testTypedef(long thing) throws org.apache.thrift.TException;

    /**
     * Prints 'testMapMap("%d")' with hello as '%d'
     * @param i32 hello - the i32 to print
     * @return map<i32,map<i32,i32>> - returns a dictionary with these values:
     *   {-4 => {-4 => -4, -3 => -3, -2 => -2, -1 => -1, }, 4 => {1 => 1, 2 => 2, 3 => 3, 4 => 4, }, }
     * 
     * @param hello
     */
    public java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>> testMapMap(int hello) throws org.apache.thrift.TException;

    /**
     * So you think you've got this all worked out, eh?
     * 
     * Creates a map with these values and prints it out:
     *   { 1 => { 2 => argument,
     *            3 => argument,
     *          },
     *     2 => { 6 => <empty Insanity struct>, },
     *   }
     * @return map<UserId, map<Numberz,Insanity>> - a map with the above values
     * 
     * @param argument
     */
    public java.util.Map<java.lang.Long,java.util.Map<Numberz,Insanity>> testInsanity(Insanity argument) throws org.apache.thrift.TException;

    /**
     * Prints 'testMulti()'
     * @param i8 arg0 -
     * @param i32 arg1 -
     * @param i64 arg2 -
     * @param map<i16, string> arg3 -
     * @param Numberz arg4 -
     * @param UserId arg5 -
     * @return Xtruct - returns an Xtruct with string_thing = "Hello2, byte_thing = arg0, i32_thing = arg1
     *    and i64_thing = arg2
     * 
     * @param arg0
     * @param arg1
     * @param arg2
     * @param arg3
     * @param arg4
     * @param arg5
     */
    public Xtruct testMulti(byte arg0, int arg1, long arg2, java.util.Map<java.lang.Short,java.lang.String> arg3, Numberz arg4, long arg5) throws org.apache.thrift.TException;

    /**
     * Print 'testException(%s)' with arg as '%s'
     * @param string arg - a string indication what type of exception to throw
     * if arg == "Xception" throw Xception with errorCode = 1001 and message = arg
     * else if arg == "TException" throw TException
     * else do not throw anything
     * 
     * @param arg
     */
    public void testException(java.lang.String arg) throws Xception, org.apache.thrift.TException;

    /**
     * Print 'testMultiException(%s, %s)' with arg0 as '%s' and arg1 as '%s'
     * @param string arg - a string indicating what type of exception to throw
     * if arg0 == "Xception" throw Xception with errorCode = 1001 and message = "This is an Xception"
     * else if arg0 == "Xception2" throw Xception2 with errorCode = 2002 and struct_thing.string_thing = "This is an Xception2"
     * else do not throw anything
     * @return Xtruct - an Xtruct with string_thing = arg1
     * 
     * @param arg0
     * @param arg1
     */
    public Xtruct testMultiException(java.lang.String arg0, java.lang.String arg1) throws Xception, Xception2, org.apache.thrift.TException;

    /**
     * Print 'testOneway(%d): Sleeping...' with secondsToSleep as '%d'
     * sleep 'secondsToSleep'
     * Print 'testOneway(%d): done sleeping!' with secondsToSleep as '%d'
     * @param i32 secondsToSleep - the number of seconds to sleep
     * 
     * @param secondsToSleep
     */
    public void testOneway(int secondsToSleep) throws org.apache.thrift.TException;

  }

  public interface AsyncIface {

    public void testVoid(org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException;

    public void testString(java.lang.String thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler) throws org.apache.thrift.TException;

    public void testBool(boolean thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException;

    public void testByte(byte thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.Byte> resultHandler) throws org.apache.thrift.TException;

    public void testI32(int thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.Integer> resultHandler) throws org.apache.thrift.TException;

    public void testI64(long thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.Long> resultHandler) throws org.apache.thrift.TException;

    public void testDouble(double thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.Double> resultHandler) throws org.apache.thrift.TException;

    public void testBinary(java.nio.ByteBuffer thing, org.apache.thrift.async.AsyncMethodCallback<java.nio.ByteBuffer> resultHandler) throws org.apache.thrift.TException;

    public void testStruct(Xtruct thing, org.apache.thrift.async.AsyncMethodCallback<Xtruct> resultHandler) throws org.apache.thrift.TException;

    public void testNest(Xtruct2 thing, org.apache.thrift.async.AsyncMethodCallback<Xtruct2> resultHandler) throws org.apache.thrift.TException;

    public void testMap(java.util.Map<java.lang.Integer,java.lang.Integer> thing, org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.Integer,java.lang.Integer>> resultHandler) throws org.apache.thrift.TException;

    public void testStringMap(java.util.Map<java.lang.String,java.lang.String> thing, org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.String,java.lang.String>> resultHandler) throws org.apache.thrift.TException;

    public void testSet(java.util.Set<java.lang.Integer> thing, org.apache.thrift.async.AsyncMethodCallback<java.util.Set<java.lang.Integer>> resultHandler) throws org.apache.thrift.TException;

    public void testList(java.util.List<java.lang.Integer> thing, org.apache.thrift.async.AsyncMethodCallback<java.util.List<java.lang.Integer>> resultHandler) throws org.apache.thrift.TException;

    public void testEnum(Numberz thing, org.apache.thrift.async.AsyncMethodCallback<Numberz> resultHandler) throws org.apache.thrift.TException;

    public void testTypedef(long thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.Long> resultHandler) throws org.apache.thrift.TException;

    public void testMapMap(int hello, org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>>> resultHandler) throws org.apache.thrift.TException;

    public void testInsanity(Insanity argument, org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.Long,java.util.Map<Numberz,Insanity>>> resultHandler) throws org.apache.thrift.TException;

    public void testMulti(byte arg0, int arg1, long arg2, java.util.Map<java.lang.Short,java.lang.String> arg3, Numberz arg4, long arg5, org.apache.thrift.async.AsyncMethodCallback<Xtruct> resultHandler) throws org.apache.thrift.TException;

    public void testException(java.lang.String arg, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException;

    public void testMultiException(java.lang.String arg0, java.lang.String arg1, org.apache.thrift.async.AsyncMethodCallback<Xtruct> resultHandler) throws org.apache.thrift.TException;

    public void testOneway(int secondsToSleep, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException;

  }

  public static class Client extends org.apache.thrift.TServiceClient implements Iface {
    public static class Factory implements org.apache.thrift.TServiceClientFactory<Client> {
      public Factory() {}
      public Client getClient(org.apache.thrift.protocol.TProtocol prot) {
        return new Client(prot);
      }
      public Client getClient(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) {
        return new Client(iprot, oprot);
      }
    }

    public Client(org.apache.thrift.protocol.TProtocol prot)
    {
      super(prot, prot);
    }

    public Client(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) {
      super(iprot, oprot);
    }

    public void testVoid() throws org.apache.thrift.TException
    {
      send_testVoid();
      recv_testVoid();
    }

    public void send_testVoid() throws org.apache.thrift.TException
    {
      testVoid_args args = new testVoid_args();
      sendBase("testVoid", args);
    }

    public void recv_testVoid() throws org.apache.thrift.TException
    {
      testVoid_result result = new testVoid_result();
      receiveBase(result, "testVoid");
      return;
    }

    public java.lang.String testString(java.lang.String thing) throws org.apache.thrift.TException
    {
      send_testString(thing);
      return recv_testString();
    }

    public void send_testString(java.lang.String thing) throws org.apache.thrift.TException
    {
      testString_args args = new testString_args();
      args.setThing(thing);
      sendBase("testString", args);
    }

    public java.lang.String recv_testString() throws org.apache.thrift.TException
    {
      testString_result result = new testString_result();
      receiveBase(result, "testString");
      if (result.isSetSuccess()) {
        return result.success;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "testString failed: unknown result");
    }

    public boolean testBool(boolean thing) throws org.apache.thrift.TException
    {
      send_testBool(thing);
      return recv_testBool();
    }

    public void send_testBool(boolean thing) throws org.apache.thrift.TException
    {
      testBool_args args = new testBool_args();
      args.setThing(thing);
      sendBase("testBool", args);
    }

    public boolean recv_testBool() throws org.apache.thrift.TException
    {
      testBool_result result = new testBool_result();
      receiveBase(result, "testBool");
      if (result.isSetSuccess()) {
        return result.success;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "testBool failed: unknown result");
    }

    public byte testByte(byte thing) throws org.apache.thrift.TException
    {
      send_testByte(thing);
      return recv_testByte();
    }

    public void send_testByte(byte thing) throws org.apache.thrift.TException
    {
      testByte_args args = new testByte_args();
      args.setThing(thing);
      sendBase("testByte", args);
    }

    public byte recv_testByte() throws org.apache.thrift.TException
    {
      testByte_result result = new testByte_result();
      receiveBase(result, "testByte");
      if (result.isSetSuccess()) {
        return result.success;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "testByte failed: unknown result");
    }

    public int testI32(int thing) throws org.apache.thrift.TException
    {
      send_testI32(thing);
      return recv_testI32();
    }

    public void send_testI32(int thing) throws org.apache.thrift.TException
    {
      testI32_args args = new testI32_args();
      args.setThing(thing);
      sendBase("testI32", args);
    }

    public int recv_testI32() throws org.apache.thrift.TException
    {
      testI32_result result = new testI32_result();
      receiveBase(result, "testI32");
      if (result.isSetSuccess()) {
        return result.success;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "testI32 failed: unknown result");
    }

    public long testI64(long thing) throws org.apache.thrift.TException
    {
      send_testI64(thing);
      return recv_testI64();
    }

    public void send_testI64(long thing) throws org.apache.thrift.TException
    {
      testI64_args args = new testI64_args();
      args.setThing(thing);
      sendBase("testI64", args);
    }

    public long recv_testI64() throws org.apache.thrift.TException
    {
      testI64_result result = new testI64_result();
      receiveBase(result, "testI64");
      if (result.isSetSuccess()) {
        return result.success;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "testI64 failed: unknown result");
    }

    public double testDouble(double thing) throws org.apache.thrift.TException
    {
      send_testDouble(thing);
      return recv_testDouble();
    }

    public void send_testDouble(double thing) throws org.apache.thrift.TException
    {
      testDouble_args args = new testDouble_args();
      args.setThing(thing);
      sendBase("testDouble", args);
    }

    public double recv_testDouble() throws org.apache.thrift.TException
    {
      testDouble_result result = new testDouble_result();
      receiveBase(result, "testDouble");
      if (result.isSetSuccess()) {
        return result.success;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "testDouble failed: unknown result");
    }

    public java.nio.ByteBuffer testBinary(java.nio.ByteBuffer thing) throws org.apache.thrift.TException
    {
      send_testBinary(thing);
      return recv_testBinary();
    }

    public void send_testBinary(java.nio.ByteBuffer thing) throws org.apache.thrift.TException
    {
      testBinary_args args = new testBinary_args();
      args.setThing(thing);
      sendBase("testBinary", args);
    }

    public java.nio.ByteBuffer recv_testBinary() throws org.apache.thrift.TException
    {
      testBinary_result result = new testBinary_result();
      receiveBase(result, "testBinary");
      if (result.isSetSuccess()) {
        return result.success;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "testBinary failed: unknown result");
    }

    public Xtruct testStruct(Xtruct thing) throws org.apache.thrift.TException
    {
      send_testStruct(thing);
      return recv_testStruct();
    }

    public void send_testStruct(Xtruct thing) throws org.apache.thrift.TException
    {
      testStruct_args args = new testStruct_args();
      args.setThing(thing);
      sendBase("testStruct", args);
    }

    public Xtruct recv_testStruct() throws org.apache.thrift.TException
    {
      testStruct_result result = new testStruct_result();
      receiveBase(result, "testStruct");
      if (result.isSetSuccess()) {
        return result.success;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "testStruct failed: unknown result");
    }

    public Xtruct2 testNest(Xtruct2 thing) throws org.apache.thrift.TException
    {
      send_testNest(thing);
      return recv_testNest();
    }

    public void send_testNest(Xtruct2 thing) throws org.apache.thrift.TException
    {
      testNest_args args = new testNest_args();
      args.setThing(thing);
      sendBase("testNest", args);
    }

    public Xtruct2 recv_testNest() throws org.apache.thrift.TException
    {
      testNest_result result = new testNest_result();
      receiveBase(result, "testNest");
      if (result.isSetSuccess()) {
        return result.success;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "testNest failed: unknown result");
    }

    public java.util.Map<java.lang.Integer,java.lang.Integer> testMap(java.util.Map<java.lang.Integer,java.lang.Integer> thing) throws org.apache.thrift.TException
    {
      send_testMap(thing);
      return recv_testMap();
    }

    public void send_testMap(java.util.Map<java.lang.Integer,java.lang.Integer> thing) throws org.apache.thrift.TException
    {
      testMap_args args = new testMap_args();
      args.setThing(thing);
      sendBase("testMap", args);
    }

    public java.util.Map<java.lang.Integer,java.lang.Integer> recv_testMap() throws org.apache.thrift.TException
    {
      testMap_result result = new testMap_result();
      receiveBase(result, "testMap");
      if (result.isSetSuccess()) {
        return result.success;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "testMap failed: unknown result");
    }

    public java.util.Map<java.lang.String,java.lang.String> testStringMap(java.util.Map<java.lang.String,java.lang.String> thing) throws org.apache.thrift.TException
    {
      send_testStringMap(thing);
      return recv_testStringMap();
    }

    public void send_testStringMap(java.util.Map<java.lang.String,java.lang.String> thing) throws org.apache.thrift.TException
    {
      testStringMap_args args = new testStringMap_args();
      args.setThing(thing);
      sendBase("testStringMap", args);
    }

    public java.util.Map<java.lang.String,java.lang.String> recv_testStringMap() throws org.apache.thrift.TException
    {
      testStringMap_result result = new testStringMap_result();
      receiveBase(result, "testStringMap");
      if (result.isSetSuccess()) {
        return result.success;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "testStringMap failed: unknown result");
    }

    public java.util.Set<java.lang.Integer> testSet(java.util.Set<java.lang.Integer> thing) throws org.apache.thrift.TException
    {
      send_testSet(thing);
      return recv_testSet();
    }

    public void send_testSet(java.util.Set<java.lang.Integer> thing) throws org.apache.thrift.TException
    {
      testSet_args args = new testSet_args();
      args.setThing(thing);
      sendBase("testSet", args);
    }

    public java.util.Set<java.lang.Integer> recv_testSet() throws org.apache.thrift.TException
    {
      testSet_result result = new testSet_result();
      receiveBase(result, "testSet");
      if (result.isSetSuccess()) {
        return result.success;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "testSet failed: unknown result");
    }

    public java.util.List<java.lang.Integer> testList(java.util.List<java.lang.Integer> thing) throws org.apache.thrift.TException
    {
      send_testList(thing);
      return recv_testList();
    }

    public void send_testList(java.util.List<java.lang.Integer> thing) throws org.apache.thrift.TException
    {
      testList_args args = new testList_args();
      args.setThing(thing);
      sendBase("testList", args);
    }

    public java.util.List<java.lang.Integer> recv_testList() throws org.apache.thrift.TException
    {
      testList_result result = new testList_result();
      receiveBase(result, "testList");
      if (result.isSetSuccess()) {
        return result.success;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "testList failed: unknown result");
    }

    public Numberz testEnum(Numberz thing) throws org.apache.thrift.TException
    {
      send_testEnum(thing);
      return recv_testEnum();
    }

    public void send_testEnum(Numberz thing) throws org.apache.thrift.TException
    {
      testEnum_args args = new testEnum_args();
      args.setThing(thing);
      sendBase("testEnum", args);
    }

    public Numberz recv_testEnum() throws org.apache.thrift.TException
    {
      testEnum_result result = new testEnum_result();
      receiveBase(result, "testEnum");
      if (result.isSetSuccess()) {
        return result.success;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "testEnum failed: unknown result");
    }

    public long testTypedef(long thing) throws org.apache.thrift.TException
    {
      send_testTypedef(thing);
      return recv_testTypedef();
    }

    public void send_testTypedef(long thing) throws org.apache.thrift.TException
    {
      testTypedef_args args = new testTypedef_args();
      args.setThing(thing);
      sendBase("testTypedef", args);
    }

    public long recv_testTypedef() throws org.apache.thrift.TException
    {
      testTypedef_result result = new testTypedef_result();
      receiveBase(result, "testTypedef");
      if (result.isSetSuccess()) {
        return result.success;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "testTypedef failed: unknown result");
    }

    public java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>> testMapMap(int hello) throws org.apache.thrift.TException
    {
      send_testMapMap(hello);
      return recv_testMapMap();
    }

    public void send_testMapMap(int hello) throws org.apache.thrift.TException
    {
      testMapMap_args args = new testMapMap_args();
      args.setHello(hello);
      sendBase("testMapMap", args);
    }

    public java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>> recv_testMapMap() throws org.apache.thrift.TException
    {
      testMapMap_result result = new testMapMap_result();
      receiveBase(result, "testMapMap");
      if (result.isSetSuccess()) {
        return result.success;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "testMapMap failed: unknown result");
    }

    public java.util.Map<java.lang.Long,java.util.Map<Numberz,Insanity>> testInsanity(Insanity argument) throws org.apache.thrift.TException
    {
      send_testInsanity(argument);
      return recv_testInsanity();
    }

    public void send_testInsanity(Insanity argument) throws org.apache.thrift.TException
    {
      testInsanity_args args = new testInsanity_args();
      args.setArgument(argument);
      sendBase("testInsanity", args);
    }

    public java.util.Map<java.lang.Long,java.util.Map<Numberz,Insanity>> recv_testInsanity() throws org.apache.thrift.TException
    {
      testInsanity_result result = new testInsanity_result();
      receiveBase(result, "testInsanity");
      if (result.isSetSuccess()) {
        return result.success;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "testInsanity failed: unknown result");
    }

    public Xtruct testMulti(byte arg0, int arg1, long arg2, java.util.Map<java.lang.Short,java.lang.String> arg3, Numberz arg4, long arg5) throws org.apache.thrift.TException
    {
      send_testMulti(arg0, arg1, arg2, arg3, arg4, arg5);
      return recv_testMulti();
    }

    public void send_testMulti(byte arg0, int arg1, long arg2, java.util.Map<java.lang.Short,java.lang.String> arg3, Numberz arg4, long arg5) throws org.apache.thrift.TException
    {
      testMulti_args args = new testMulti_args();
      args.setArg0(arg0);
      args.setArg1(arg1);
      args.setArg2(arg2);
      args.setArg3(arg3);
      args.setArg4(arg4);
      args.setArg5(arg5);
      sendBase("testMulti", args);
    }

    public Xtruct recv_testMulti() throws org.apache.thrift.TException
    {
      testMulti_result result = new testMulti_result();
      receiveBase(result, "testMulti");
      if (result.isSetSuccess()) {
        return result.success;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "testMulti failed: unknown result");
    }

    public void testException(java.lang.String arg) throws Xception, org.apache.thrift.TException
    {
      send_testException(arg);
      recv_testException();
    }

    public void send_testException(java.lang.String arg) throws org.apache.thrift.TException
    {
      testException_args args = new testException_args();
      args.setArg(arg);
      sendBase("testException", args);
    }

    public void recv_testException() throws Xception, org.apache.thrift.TException
    {
      testException_result result = new testException_result();
      receiveBase(result, "testException");
      if (result.err1 != null) {
        throw result.err1;
      }
      return;
    }

    public Xtruct testMultiException(java.lang.String arg0, java.lang.String arg1) throws Xception, Xception2, org.apache.thrift.TException
    {
      send_testMultiException(arg0, arg1);
      return recv_testMultiException();
    }

    public void send_testMultiException(java.lang.String arg0, java.lang.String arg1) throws org.apache.thrift.TException
    {
      testMultiException_args args = new testMultiException_args();
      args.setArg0(arg0);
      args.setArg1(arg1);
      sendBase("testMultiException", args);
    }

    public Xtruct recv_testMultiException() throws Xception, Xception2, org.apache.thrift.TException
    {
      testMultiException_result result = new testMultiException_result();
      receiveBase(result, "testMultiException");
      if (result.isSetSuccess()) {
        return result.success;
      }
      if (result.err1 != null) {
        throw result.err1;
      }
      if (result.err2 != null) {
        throw result.err2;
      }
      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "testMultiException failed: unknown result");
    }

    public void testOneway(int secondsToSleep) throws org.apache.thrift.TException
    {
      send_testOneway(secondsToSleep);
    }

    public void send_testOneway(int secondsToSleep) throws org.apache.thrift.TException
    {
      testOneway_args args = new testOneway_args();
      args.setSecondsToSleep(secondsToSleep);
      sendBaseOneway("testOneway", args);
    }

  }
  public static class AsyncClient extends org.apache.thrift.async.TAsyncClient implements AsyncIface {
    public static class Factory implements org.apache.thrift.async.TAsyncClientFactory<AsyncClient> {
      private org.apache.thrift.async.TAsyncClientManager clientManager;
      private org.apache.thrift.protocol.TProtocolFactory protocolFactory;
      public Factory(org.apache.thrift.async.TAsyncClientManager clientManager, org.apache.thrift.protocol.TProtocolFactory protocolFactory) {
        this.clientManager = clientManager;
        this.protocolFactory = protocolFactory;
      }
      public AsyncClient getAsyncClient(org.apache.thrift.transport.TNonblockingTransport transport) {
        return new AsyncClient(protocolFactory, clientManager, transport);
      }
    }

    public AsyncClient(org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.async.TAsyncClientManager clientManager, org.apache.thrift.transport.TNonblockingTransport transport) {
      super(protocolFactory, clientManager, transport);
    }

    public void testVoid(org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testVoid_call method_call = new testVoid_call(resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testVoid_call extends org.apache.thrift.async.TAsyncMethodCall<Void> {
      public testVoid_call(org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testVoid", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testVoid_args args = new testVoid_args();
        args.write(prot);
        prot.writeMessageEnd();
      }

      public Void getResult() throws org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return null;
      }
    }

    public void testString(java.lang.String thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testString_call method_call = new testString_call(thing, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testString_call extends org.apache.thrift.async.TAsyncMethodCall<java.lang.String> {
      private java.lang.String thing;
      public testString_call(java.lang.String thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.thing = thing;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testString", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testString_args args = new testString_args();
        args.setThing(thing);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public java.lang.String getResult() throws org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return (new Client(prot)).recv_testString();
      }
    }

    public void testBool(boolean thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testBool_call method_call = new testBool_call(thing, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testBool_call extends org.apache.thrift.async.TAsyncMethodCall<java.lang.Boolean> {
      private boolean thing;
      public testBool_call(boolean thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.thing = thing;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testBool", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testBool_args args = new testBool_args();
        args.setThing(thing);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public java.lang.Boolean getResult() throws org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return (new Client(prot)).recv_testBool();
      }
    }

    public void testByte(byte thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.Byte> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testByte_call method_call = new testByte_call(thing, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testByte_call extends org.apache.thrift.async.TAsyncMethodCall<java.lang.Byte> {
      private byte thing;
      public testByte_call(byte thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.Byte> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.thing = thing;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testByte", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testByte_args args = new testByte_args();
        args.setThing(thing);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public java.lang.Byte getResult() throws org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return (new Client(prot)).recv_testByte();
      }
    }

    public void testI32(int thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.Integer> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testI32_call method_call = new testI32_call(thing, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testI32_call extends org.apache.thrift.async.TAsyncMethodCall<java.lang.Integer> {
      private int thing;
      public testI32_call(int thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.Integer> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.thing = thing;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testI32", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testI32_args args = new testI32_args();
        args.setThing(thing);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public java.lang.Integer getResult() throws org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return (new Client(prot)).recv_testI32();
      }
    }

    public void testI64(long thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.Long> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testI64_call method_call = new testI64_call(thing, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testI64_call extends org.apache.thrift.async.TAsyncMethodCall<java.lang.Long> {
      private long thing;
      public testI64_call(long thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.Long> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.thing = thing;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testI64", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testI64_args args = new testI64_args();
        args.setThing(thing);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public java.lang.Long getResult() throws org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return (new Client(prot)).recv_testI64();
      }
    }

    public void testDouble(double thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.Double> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testDouble_call method_call = new testDouble_call(thing, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testDouble_call extends org.apache.thrift.async.TAsyncMethodCall<java.lang.Double> {
      private double thing;
      public testDouble_call(double thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.Double> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.thing = thing;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testDouble", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testDouble_args args = new testDouble_args();
        args.setThing(thing);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public java.lang.Double getResult() throws org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return (new Client(prot)).recv_testDouble();
      }
    }

    public void testBinary(java.nio.ByteBuffer thing, org.apache.thrift.async.AsyncMethodCallback<java.nio.ByteBuffer> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testBinary_call method_call = new testBinary_call(thing, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testBinary_call extends org.apache.thrift.async.TAsyncMethodCall<java.nio.ByteBuffer> {
      private java.nio.ByteBuffer thing;
      public testBinary_call(java.nio.ByteBuffer thing, org.apache.thrift.async.AsyncMethodCallback<java.nio.ByteBuffer> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.thing = thing;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testBinary", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testBinary_args args = new testBinary_args();
        args.setThing(thing);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public java.nio.ByteBuffer getResult() throws org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return (new Client(prot)).recv_testBinary();
      }
    }

    public void testStruct(Xtruct thing, org.apache.thrift.async.AsyncMethodCallback<Xtruct> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testStruct_call method_call = new testStruct_call(thing, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testStruct_call extends org.apache.thrift.async.TAsyncMethodCall<Xtruct> {
      private Xtruct thing;
      public testStruct_call(Xtruct thing, org.apache.thrift.async.AsyncMethodCallback<Xtruct> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.thing = thing;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testStruct", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testStruct_args args = new testStruct_args();
        args.setThing(thing);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public Xtruct getResult() throws org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return (new Client(prot)).recv_testStruct();
      }
    }

    public void testNest(Xtruct2 thing, org.apache.thrift.async.AsyncMethodCallback<Xtruct2> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testNest_call method_call = new testNest_call(thing, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testNest_call extends org.apache.thrift.async.TAsyncMethodCall<Xtruct2> {
      private Xtruct2 thing;
      public testNest_call(Xtruct2 thing, org.apache.thrift.async.AsyncMethodCallback<Xtruct2> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.thing = thing;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testNest", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testNest_args args = new testNest_args();
        args.setThing(thing);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public Xtruct2 getResult() throws org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return (new Client(prot)).recv_testNest();
      }
    }

    public void testMap(java.util.Map<java.lang.Integer,java.lang.Integer> thing, org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.Integer,java.lang.Integer>> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testMap_call method_call = new testMap_call(thing, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testMap_call extends org.apache.thrift.async.TAsyncMethodCall<java.util.Map<java.lang.Integer,java.lang.Integer>> {
      private java.util.Map<java.lang.Integer,java.lang.Integer> thing;
      public testMap_call(java.util.Map<java.lang.Integer,java.lang.Integer> thing, org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.Integer,java.lang.Integer>> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.thing = thing;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testMap", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testMap_args args = new testMap_args();
        args.setThing(thing);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public java.util.Map<java.lang.Integer,java.lang.Integer> getResult() throws org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return (new Client(prot)).recv_testMap();
      }
    }

    public void testStringMap(java.util.Map<java.lang.String,java.lang.String> thing, org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.String,java.lang.String>> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testStringMap_call method_call = new testStringMap_call(thing, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testStringMap_call extends org.apache.thrift.async.TAsyncMethodCall<java.util.Map<java.lang.String,java.lang.String>> {
      private java.util.Map<java.lang.String,java.lang.String> thing;
      public testStringMap_call(java.util.Map<java.lang.String,java.lang.String> thing, org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.String,java.lang.String>> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.thing = thing;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testStringMap", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testStringMap_args args = new testStringMap_args();
        args.setThing(thing);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public java.util.Map<java.lang.String,java.lang.String> getResult() throws org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return (new Client(prot)).recv_testStringMap();
      }
    }

    public void testSet(java.util.Set<java.lang.Integer> thing, org.apache.thrift.async.AsyncMethodCallback<java.util.Set<java.lang.Integer>> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testSet_call method_call = new testSet_call(thing, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testSet_call extends org.apache.thrift.async.TAsyncMethodCall<java.util.Set<java.lang.Integer>> {
      private java.util.Set<java.lang.Integer> thing;
      public testSet_call(java.util.Set<java.lang.Integer> thing, org.apache.thrift.async.AsyncMethodCallback<java.util.Set<java.lang.Integer>> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.thing = thing;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testSet", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testSet_args args = new testSet_args();
        args.setThing(thing);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public java.util.Set<java.lang.Integer> getResult() throws org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return (new Client(prot)).recv_testSet();
      }
    }

    public void testList(java.util.List<java.lang.Integer> thing, org.apache.thrift.async.AsyncMethodCallback<java.util.List<java.lang.Integer>> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testList_call method_call = new testList_call(thing, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testList_call extends org.apache.thrift.async.TAsyncMethodCall<java.util.List<java.lang.Integer>> {
      private java.util.List<java.lang.Integer> thing;
      public testList_call(java.util.List<java.lang.Integer> thing, org.apache.thrift.async.AsyncMethodCallback<java.util.List<java.lang.Integer>> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.thing = thing;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testList", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testList_args args = new testList_args();
        args.setThing(thing);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public java.util.List<java.lang.Integer> getResult() throws org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return (new Client(prot)).recv_testList();
      }
    }

    public void testEnum(Numberz thing, org.apache.thrift.async.AsyncMethodCallback<Numberz> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testEnum_call method_call = new testEnum_call(thing, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testEnum_call extends org.apache.thrift.async.TAsyncMethodCall<Numberz> {
      private Numberz thing;
      public testEnum_call(Numberz thing, org.apache.thrift.async.AsyncMethodCallback<Numberz> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.thing = thing;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testEnum", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testEnum_args args = new testEnum_args();
        args.setThing(thing);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public Numberz getResult() throws org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return (new Client(prot)).recv_testEnum();
      }
    }

    public void testTypedef(long thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.Long> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testTypedef_call method_call = new testTypedef_call(thing, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testTypedef_call extends org.apache.thrift.async.TAsyncMethodCall<java.lang.Long> {
      private long thing;
      public testTypedef_call(long thing, org.apache.thrift.async.AsyncMethodCallback<java.lang.Long> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.thing = thing;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testTypedef", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testTypedef_args args = new testTypedef_args();
        args.setThing(thing);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public java.lang.Long getResult() throws org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return (new Client(prot)).recv_testTypedef();
      }
    }

    public void testMapMap(int hello, org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>>> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testMapMap_call method_call = new testMapMap_call(hello, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testMapMap_call extends org.apache.thrift.async.TAsyncMethodCall<java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>>> {
      private int hello;
      public testMapMap_call(int hello, org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>>> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.hello = hello;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testMapMap", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testMapMap_args args = new testMapMap_args();
        args.setHello(hello);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>> getResult() throws org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return (new Client(prot)).recv_testMapMap();
      }
    }

    public void testInsanity(Insanity argument, org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.Long,java.util.Map<Numberz,Insanity>>> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testInsanity_call method_call = new testInsanity_call(argument, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testInsanity_call extends org.apache.thrift.async.TAsyncMethodCall<java.util.Map<java.lang.Long,java.util.Map<Numberz,Insanity>>> {
      private Insanity argument;
      public testInsanity_call(Insanity argument, org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.Long,java.util.Map<Numberz,Insanity>>> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.argument = argument;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testInsanity", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testInsanity_args args = new testInsanity_args();
        args.setArgument(argument);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public java.util.Map<java.lang.Long,java.util.Map<Numberz,Insanity>> getResult() throws org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return (new Client(prot)).recv_testInsanity();
      }
    }

    public void testMulti(byte arg0, int arg1, long arg2, java.util.Map<java.lang.Short,java.lang.String> arg3, Numberz arg4, long arg5, org.apache.thrift.async.AsyncMethodCallback<Xtruct> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testMulti_call method_call = new testMulti_call(arg0, arg1, arg2, arg3, arg4, arg5, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testMulti_call extends org.apache.thrift.async.TAsyncMethodCall<Xtruct> {
      private byte arg0;
      private int arg1;
      private long arg2;
      private java.util.Map<java.lang.Short,java.lang.String> arg3;
      private Numberz arg4;
      private long arg5;
      public testMulti_call(byte arg0, int arg1, long arg2, java.util.Map<java.lang.Short,java.lang.String> arg3, Numberz arg4, long arg5, org.apache.thrift.async.AsyncMethodCallback<Xtruct> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.arg0 = arg0;
        this.arg1 = arg1;
        this.arg2 = arg2;
        this.arg3 = arg3;
        this.arg4 = arg4;
        this.arg5 = arg5;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testMulti", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testMulti_args args = new testMulti_args();
        args.setArg0(arg0);
        args.setArg1(arg1);
        args.setArg2(arg2);
        args.setArg3(arg3);
        args.setArg4(arg4);
        args.setArg5(arg5);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public Xtruct getResult() throws org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return (new Client(prot)).recv_testMulti();
      }
    }

    public void testException(java.lang.String arg, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testException_call method_call = new testException_call(arg, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testException_call extends org.apache.thrift.async.TAsyncMethodCall<Void> {
      private java.lang.String arg;
      public testException_call(java.lang.String arg, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.arg = arg;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testException", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testException_args args = new testException_args();
        args.setArg(arg);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public Void getResult() throws Xception, org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return null;
      }
    }

    public void testMultiException(java.lang.String arg0, java.lang.String arg1, org.apache.thrift.async.AsyncMethodCallback<Xtruct> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testMultiException_call method_call = new testMultiException_call(arg0, arg1, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testMultiException_call extends org.apache.thrift.async.TAsyncMethodCall<Xtruct> {
      private java.lang.String arg0;
      private java.lang.String arg1;
      public testMultiException_call(java.lang.String arg0, java.lang.String arg1, org.apache.thrift.async.AsyncMethodCallback<Xtruct> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, false);
        this.arg0 = arg0;
        this.arg1 = arg1;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testMultiException", org.apache.thrift.protocol.TMessageType.CALL, 0));
        testMultiException_args args = new testMultiException_args();
        args.setArg0(arg0);
        args.setArg1(arg1);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public Xtruct getResult() throws Xception, Xception2, org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return (new Client(prot)).recv_testMultiException();
      }
    }

    public void testOneway(int secondsToSleep, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
      checkReady();
      testOneway_call method_call = new testOneway_call(secondsToSleep, resultHandler, this, ___protocolFactory, ___transport);
      this.___currentMethod = method_call;
      ___manager.call(method_call);
    }

    public static class testOneway_call extends org.apache.thrift.async.TAsyncMethodCall<Void> {
      private int secondsToSleep;
      public testOneway_call(int secondsToSleep, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
        super(client, protocolFactory, transport, resultHandler, true);
        this.secondsToSleep = secondsToSleep;
      }

      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("testOneway", org.apache.thrift.protocol.TMessageType.ONEWAY, 0));
        testOneway_args args = new testOneway_args();
        args.setSecondsToSleep(secondsToSleep);
        args.write(prot);
        prot.writeMessageEnd();
      }

      public Void getResult() throws org.apache.thrift.TException {
        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
          throw new java.lang.IllegalStateException("Method call not finished!");
        }
        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
        return null;
      }
    }

  }

  public static class Processor<I extends Iface> extends org.apache.thrift.TBaseProcessor<I> implements org.apache.thrift.TProcessor {
    private static final org.slf4j.Logger _LOGGER = org.slf4j.LoggerFactory.getLogger(Processor.class.getName());
    public Processor(I iface) {
      super(iface, getProcessMap(new java.util.HashMap<java.lang.String, org.apache.thrift.ProcessFunction<I, ? extends org.apache.thrift.TBase>>()));
    }

    protected Processor(I iface, java.util.Map<java.lang.String, org.apache.thrift.ProcessFunction<I, ? extends org.apache.thrift.TBase>> processMap) {
      super(iface, getProcessMap(processMap));
    }

    private static <I extends Iface> java.util.Map<java.lang.String,  org.apache.thrift.ProcessFunction<I, ? extends org.apache.thrift.TBase>> getProcessMap(java.util.Map<java.lang.String, org.apache.thrift.ProcessFunction<I, ? extends  org.apache.thrift.TBase>> processMap) {
      processMap.put("testVoid", new testVoid());
      processMap.put("testString", new testString());
      processMap.put("testBool", new testBool());
      processMap.put("testByte", new testByte());
      processMap.put("testI32", new testI32());
      processMap.put("testI64", new testI64());
      processMap.put("testDouble", new testDouble());
      processMap.put("testBinary", new testBinary());
      processMap.put("testStruct", new testStruct());
      processMap.put("testNest", new testNest());
      processMap.put("testMap", new testMap());
      processMap.put("testStringMap", new testStringMap());
      processMap.put("testSet", new testSet());
      processMap.put("testList", new testList());
      processMap.put("testEnum", new testEnum());
      processMap.put("testTypedef", new testTypedef());
      processMap.put("testMapMap", new testMapMap());
      processMap.put("testInsanity", new testInsanity());
      processMap.put("testMulti", new testMulti());
      processMap.put("testException", new testException());
      processMap.put("testMultiException", new testMultiException());
      processMap.put("testOneway", new testOneway());
      return processMap;
    }

    public static class testVoid<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testVoid_args> {
      public testVoid() {
        super("testVoid");
      }

      public testVoid_args getEmptyArgsInstance() {
        return new testVoid_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testVoid_result getResult(I iface, testVoid_args args) throws org.apache.thrift.TException {
        testVoid_result result = new testVoid_result();
        iface.testVoid();
        return result;
      }
    }

    public static class testString<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testString_args> {
      public testString() {
        super("testString");
      }

      public testString_args getEmptyArgsInstance() {
        return new testString_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testString_result getResult(I iface, testString_args args) throws org.apache.thrift.TException {
        testString_result result = new testString_result();
        result.success = iface.testString(args.thing);
        return result;
      }
    }

    public static class testBool<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testBool_args> {
      public testBool() {
        super("testBool");
      }

      public testBool_args getEmptyArgsInstance() {
        return new testBool_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testBool_result getResult(I iface, testBool_args args) throws org.apache.thrift.TException {
        testBool_result result = new testBool_result();
        result.success = iface.testBool(args.thing);
        result.setSuccessIsSet(true);
        return result;
      }
    }

    public static class testByte<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testByte_args> {
      public testByte() {
        super("testByte");
      }

      public testByte_args getEmptyArgsInstance() {
        return new testByte_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testByte_result getResult(I iface, testByte_args args) throws org.apache.thrift.TException {
        testByte_result result = new testByte_result();
        result.success = iface.testByte(args.thing);
        result.setSuccessIsSet(true);
        return result;
      }
    }

    public static class testI32<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testI32_args> {
      public testI32() {
        super("testI32");
      }

      public testI32_args getEmptyArgsInstance() {
        return new testI32_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testI32_result getResult(I iface, testI32_args args) throws org.apache.thrift.TException {
        testI32_result result = new testI32_result();
        result.success = iface.testI32(args.thing);
        result.setSuccessIsSet(true);
        return result;
      }
    }

    public static class testI64<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testI64_args> {
      public testI64() {
        super("testI64");
      }

      public testI64_args getEmptyArgsInstance() {
        return new testI64_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testI64_result getResult(I iface, testI64_args args) throws org.apache.thrift.TException {
        testI64_result result = new testI64_result();
        result.success = iface.testI64(args.thing);
        result.setSuccessIsSet(true);
        return result;
      }
    }

    public static class testDouble<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testDouble_args> {
      public testDouble() {
        super("testDouble");
      }

      public testDouble_args getEmptyArgsInstance() {
        return new testDouble_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testDouble_result getResult(I iface, testDouble_args args) throws org.apache.thrift.TException {
        testDouble_result result = new testDouble_result();
        result.success = iface.testDouble(args.thing);
        result.setSuccessIsSet(true);
        return result;
      }
    }

    public static class testBinary<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testBinary_args> {
      public testBinary() {
        super("testBinary");
      }

      public testBinary_args getEmptyArgsInstance() {
        return new testBinary_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testBinary_result getResult(I iface, testBinary_args args) throws org.apache.thrift.TException {
        testBinary_result result = new testBinary_result();
        result.success = iface.testBinary(args.thing);
        return result;
      }
    }

    public static class testStruct<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testStruct_args> {
      public testStruct() {
        super("testStruct");
      }

      public testStruct_args getEmptyArgsInstance() {
        return new testStruct_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testStruct_result getResult(I iface, testStruct_args args) throws org.apache.thrift.TException {
        testStruct_result result = new testStruct_result();
        result.success = iface.testStruct(args.thing);
        return result;
      }
    }

    public static class testNest<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testNest_args> {
      public testNest() {
        super("testNest");
      }

      public testNest_args getEmptyArgsInstance() {
        return new testNest_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testNest_result getResult(I iface, testNest_args args) throws org.apache.thrift.TException {
        testNest_result result = new testNest_result();
        result.success = iface.testNest(args.thing);
        return result;
      }
    }

    public static class testMap<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testMap_args> {
      public testMap() {
        super("testMap");
      }

      public testMap_args getEmptyArgsInstance() {
        return new testMap_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testMap_result getResult(I iface, testMap_args args) throws org.apache.thrift.TException {
        testMap_result result = new testMap_result();
        result.success = iface.testMap(args.thing);
        return result;
      }
    }

    public static class testStringMap<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testStringMap_args> {
      public testStringMap() {
        super("testStringMap");
      }

      public testStringMap_args getEmptyArgsInstance() {
        return new testStringMap_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testStringMap_result getResult(I iface, testStringMap_args args) throws org.apache.thrift.TException {
        testStringMap_result result = new testStringMap_result();
        result.success = iface.testStringMap(args.thing);
        return result;
      }
    }

    public static class testSet<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testSet_args> {
      public testSet() {
        super("testSet");
      }

      public testSet_args getEmptyArgsInstance() {
        return new testSet_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testSet_result getResult(I iface, testSet_args args) throws org.apache.thrift.TException {
        testSet_result result = new testSet_result();
        result.success = iface.testSet(args.thing);
        return result;
      }
    }

    public static class testList<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testList_args> {
      public testList() {
        super("testList");
      }

      public testList_args getEmptyArgsInstance() {
        return new testList_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testList_result getResult(I iface, testList_args args) throws org.apache.thrift.TException {
        testList_result result = new testList_result();
        result.success = iface.testList(args.thing);
        return result;
      }
    }

    public static class testEnum<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testEnum_args> {
      public testEnum() {
        super("testEnum");
      }

      public testEnum_args getEmptyArgsInstance() {
        return new testEnum_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testEnum_result getResult(I iface, testEnum_args args) throws org.apache.thrift.TException {
        testEnum_result result = new testEnum_result();
        result.success = iface.testEnum(args.thing);
        return result;
      }
    }

    public static class testTypedef<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testTypedef_args> {
      public testTypedef() {
        super("testTypedef");
      }

      public testTypedef_args getEmptyArgsInstance() {
        return new testTypedef_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testTypedef_result getResult(I iface, testTypedef_args args) throws org.apache.thrift.TException {
        testTypedef_result result = new testTypedef_result();
        result.success = iface.testTypedef(args.thing);
        result.setSuccessIsSet(true);
        return result;
      }
    }

    public static class testMapMap<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testMapMap_args> {
      public testMapMap() {
        super("testMapMap");
      }

      public testMapMap_args getEmptyArgsInstance() {
        return new testMapMap_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testMapMap_result getResult(I iface, testMapMap_args args) throws org.apache.thrift.TException {
        testMapMap_result result = new testMapMap_result();
        result.success = iface.testMapMap(args.hello);
        return result;
      }
    }

    public static class testInsanity<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testInsanity_args> {
      public testInsanity() {
        super("testInsanity");
      }

      public testInsanity_args getEmptyArgsInstance() {
        return new testInsanity_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testInsanity_result getResult(I iface, testInsanity_args args) throws org.apache.thrift.TException {
        testInsanity_result result = new testInsanity_result();
        result.success = iface.testInsanity(args.argument);
        return result;
      }
    }

    public static class testMulti<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testMulti_args> {
      public testMulti() {
        super("testMulti");
      }

      public testMulti_args getEmptyArgsInstance() {
        return new testMulti_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testMulti_result getResult(I iface, testMulti_args args) throws org.apache.thrift.TException {
        testMulti_result result = new testMulti_result();
        result.success = iface.testMulti(args.arg0, args.arg1, args.arg2, args.arg3, args.arg4, args.arg5);
        return result;
      }
    }

    public static class testException<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testException_args> {
      public testException() {
        super("testException");
      }

      public testException_args getEmptyArgsInstance() {
        return new testException_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testException_result getResult(I iface, testException_args args) throws org.apache.thrift.TException {
        testException_result result = new testException_result();
        try {
          iface.testException(args.arg);
        } catch (Xception err1) {
          result.err1 = err1;
        }
        return result;
      }
    }

    public static class testMultiException<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testMultiException_args> {
      public testMultiException() {
        super("testMultiException");
      }

      public testMultiException_args getEmptyArgsInstance() {
        return new testMultiException_args();
      }

      protected boolean isOneway() {
        return false;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public testMultiException_result getResult(I iface, testMultiException_args args) throws org.apache.thrift.TException {
        testMultiException_result result = new testMultiException_result();
        try {
          result.success = iface.testMultiException(args.arg0, args.arg1);
        } catch (Xception err1) {
          result.err1 = err1;
        } catch (Xception2 err2) {
          result.err2 = err2;
        }
        return result;
      }
    }

    public static class testOneway<I extends Iface> extends org.apache.thrift.ProcessFunction<I, testOneway_args> {
      public testOneway() {
        super("testOneway");
      }

      public testOneway_args getEmptyArgsInstance() {
        return new testOneway_args();
      }

      protected boolean isOneway() {
        return true;
      }

      @Override
      protected boolean rethrowUnhandledExceptions() {
        return false;
      }

      public org.apache.thrift.TBase getResult(I iface, testOneway_args args) throws org.apache.thrift.TException {
        iface.testOneway(args.secondsToSleep);
        return null;
      }
    }

  }

  public static class AsyncProcessor<I extends AsyncIface> extends org.apache.thrift.TBaseAsyncProcessor<I> {
    private static final org.slf4j.Logger _LOGGER = org.slf4j.LoggerFactory.getLogger(AsyncProcessor.class.getName());
    public AsyncProcessor(I iface) {
      super(iface, getProcessMap(new java.util.HashMap<java.lang.String, org.apache.thrift.AsyncProcessFunction<I, ? extends org.apache.thrift.TBase, ?>>()));
    }

    protected AsyncProcessor(I iface, java.util.Map<java.lang.String,  org.apache.thrift.AsyncProcessFunction<I, ? extends  org.apache.thrift.TBase, ?>> processMap) {
      super(iface, getProcessMap(processMap));
    }

    private static <I extends AsyncIface> java.util.Map<java.lang.String,  org.apache.thrift.AsyncProcessFunction<I, ? extends  org.apache.thrift.TBase,?>> getProcessMap(java.util.Map<java.lang.String,  org.apache.thrift.AsyncProcessFunction<I, ? extends  org.apache.thrift.TBase, ?>> processMap) {
      processMap.put("testVoid", new testVoid());
      processMap.put("testString", new testString());
      processMap.put("testBool", new testBool());
      processMap.put("testByte", new testByte());
      processMap.put("testI32", new testI32());
      processMap.put("testI64", new testI64());
      processMap.put("testDouble", new testDouble());
      processMap.put("testBinary", new testBinary());
      processMap.put("testStruct", new testStruct());
      processMap.put("testNest", new testNest());
      processMap.put("testMap", new testMap());
      processMap.put("testStringMap", new testStringMap());
      processMap.put("testSet", new testSet());
      processMap.put("testList", new testList());
      processMap.put("testEnum", new testEnum());
      processMap.put("testTypedef", new testTypedef());
      processMap.put("testMapMap", new testMapMap());
      processMap.put("testInsanity", new testInsanity());
      processMap.put("testMulti", new testMulti());
      processMap.put("testException", new testException());
      processMap.put("testMultiException", new testMultiException());
      processMap.put("testOneway", new testOneway());
      return processMap;
    }

    public static class testVoid<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testVoid_args, Void> {
      public testVoid() {
        super("testVoid");
      }

      public testVoid_args getEmptyArgsInstance() {
        return new testVoid_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<Void> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<Void>() { 
          public void onComplete(Void o) {
            testVoid_result result = new testVoid_result();
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testVoid_result result = new testVoid_result();
            if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testVoid_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
        iface.testVoid(resultHandler);
      }
    }

    public static class testString<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testString_args, java.lang.String> {
      public testString() {
        super("testString");
      }

      public testString_args getEmptyArgsInstance() {
        return new testString_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<java.lang.String> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<java.lang.String>() { 
          public void onComplete(java.lang.String o) {
            testString_result result = new testString_result();
            result.success = o;
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testString_result result = new testString_result();
            if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testString_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler) throws org.apache.thrift.TException {
        iface.testString(args.thing,resultHandler);
      }
    }

    public static class testBool<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testBool_args, java.lang.Boolean> {
      public testBool() {
        super("testBool");
      }

      public testBool_args getEmptyArgsInstance() {
        return new testBool_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean>() { 
          public void onComplete(java.lang.Boolean o) {
            testBool_result result = new testBool_result();
            result.success = o;
            result.setSuccessIsSet(true);
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testBool_result result = new testBool_result();
            if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testBool_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
        iface.testBool(args.thing,resultHandler);
      }
    }

    public static class testByte<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testByte_args, java.lang.Byte> {
      public testByte() {
        super("testByte");
      }

      public testByte_args getEmptyArgsInstance() {
        return new testByte_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<java.lang.Byte> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<java.lang.Byte>() { 
          public void onComplete(java.lang.Byte o) {
            testByte_result result = new testByte_result();
            result.success = o;
            result.setSuccessIsSet(true);
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testByte_result result = new testByte_result();
            if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testByte_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.Byte> resultHandler) throws org.apache.thrift.TException {
        iface.testByte(args.thing,resultHandler);
      }
    }

    public static class testI32<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testI32_args, java.lang.Integer> {
      public testI32() {
        super("testI32");
      }

      public testI32_args getEmptyArgsInstance() {
        return new testI32_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<java.lang.Integer> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<java.lang.Integer>() { 
          public void onComplete(java.lang.Integer o) {
            testI32_result result = new testI32_result();
            result.success = o;
            result.setSuccessIsSet(true);
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testI32_result result = new testI32_result();
            if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testI32_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.Integer> resultHandler) throws org.apache.thrift.TException {
        iface.testI32(args.thing,resultHandler);
      }
    }

    public static class testI64<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testI64_args, java.lang.Long> {
      public testI64() {
        super("testI64");
      }

      public testI64_args getEmptyArgsInstance() {
        return new testI64_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<java.lang.Long> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<java.lang.Long>() { 
          public void onComplete(java.lang.Long o) {
            testI64_result result = new testI64_result();
            result.success = o;
            result.setSuccessIsSet(true);
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testI64_result result = new testI64_result();
            if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testI64_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.Long> resultHandler) throws org.apache.thrift.TException {
        iface.testI64(args.thing,resultHandler);
      }
    }

    public static class testDouble<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testDouble_args, java.lang.Double> {
      public testDouble() {
        super("testDouble");
      }

      public testDouble_args getEmptyArgsInstance() {
        return new testDouble_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<java.lang.Double> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<java.lang.Double>() { 
          public void onComplete(java.lang.Double o) {
            testDouble_result result = new testDouble_result();
            result.success = o;
            result.setSuccessIsSet(true);
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testDouble_result result = new testDouble_result();
            if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testDouble_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.Double> resultHandler) throws org.apache.thrift.TException {
        iface.testDouble(args.thing,resultHandler);
      }
    }

    public static class testBinary<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testBinary_args, java.nio.ByteBuffer> {
      public testBinary() {
        super("testBinary");
      }

      public testBinary_args getEmptyArgsInstance() {
        return new testBinary_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<java.nio.ByteBuffer> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<java.nio.ByteBuffer>() { 
          public void onComplete(java.nio.ByteBuffer o) {
            testBinary_result result = new testBinary_result();
            result.success = o;
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testBinary_result result = new testBinary_result();
            if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testBinary_args args, org.apache.thrift.async.AsyncMethodCallback<java.nio.ByteBuffer> resultHandler) throws org.apache.thrift.TException {
        iface.testBinary(args.thing,resultHandler);
      }
    }

    public static class testStruct<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testStruct_args, Xtruct> {
      public testStruct() {
        super("testStruct");
      }

      public testStruct_args getEmptyArgsInstance() {
        return new testStruct_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<Xtruct> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<Xtruct>() { 
          public void onComplete(Xtruct o) {
            testStruct_result result = new testStruct_result();
            result.success = o;
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testStruct_result result = new testStruct_result();
            if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testStruct_args args, org.apache.thrift.async.AsyncMethodCallback<Xtruct> resultHandler) throws org.apache.thrift.TException {
        iface.testStruct(args.thing,resultHandler);
      }
    }

    public static class testNest<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testNest_args, Xtruct2> {
      public testNest() {
        super("testNest");
      }

      public testNest_args getEmptyArgsInstance() {
        return new testNest_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<Xtruct2> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<Xtruct2>() { 
          public void onComplete(Xtruct2 o) {
            testNest_result result = new testNest_result();
            result.success = o;
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testNest_result result = new testNest_result();
            if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testNest_args args, org.apache.thrift.async.AsyncMethodCallback<Xtruct2> resultHandler) throws org.apache.thrift.TException {
        iface.testNest(args.thing,resultHandler);
      }
    }

    public static class testMap<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testMap_args, java.util.Map<java.lang.Integer,java.lang.Integer>> {
      public testMap() {
        super("testMap");
      }

      public testMap_args getEmptyArgsInstance() {
        return new testMap_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.Integer,java.lang.Integer>> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.Integer,java.lang.Integer>>() { 
          public void onComplete(java.util.Map<java.lang.Integer,java.lang.Integer> o) {
            testMap_result result = new testMap_result();
            result.success = o;
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testMap_result result = new testMap_result();
            if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testMap_args args, org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.Integer,java.lang.Integer>> resultHandler) throws org.apache.thrift.TException {
        iface.testMap(args.thing,resultHandler);
      }
    }

    public static class testStringMap<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testStringMap_args, java.util.Map<java.lang.String,java.lang.String>> {
      public testStringMap() {
        super("testStringMap");
      }

      public testStringMap_args getEmptyArgsInstance() {
        return new testStringMap_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.String,java.lang.String>> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.String,java.lang.String>>() { 
          public void onComplete(java.util.Map<java.lang.String,java.lang.String> o) {
            testStringMap_result result = new testStringMap_result();
            result.success = o;
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testStringMap_result result = new testStringMap_result();
            if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testStringMap_args args, org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.String,java.lang.String>> resultHandler) throws org.apache.thrift.TException {
        iface.testStringMap(args.thing,resultHandler);
      }
    }

    public static class testSet<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testSet_args, java.util.Set<java.lang.Integer>> {
      public testSet() {
        super("testSet");
      }

      public testSet_args getEmptyArgsInstance() {
        return new testSet_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<java.util.Set<java.lang.Integer>> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<java.util.Set<java.lang.Integer>>() { 
          public void onComplete(java.util.Set<java.lang.Integer> o) {
            testSet_result result = new testSet_result();
            result.success = o;
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testSet_result result = new testSet_result();
            if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testSet_args args, org.apache.thrift.async.AsyncMethodCallback<java.util.Set<java.lang.Integer>> resultHandler) throws org.apache.thrift.TException {
        iface.testSet(args.thing,resultHandler);
      }
    }

    public static class testList<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testList_args, java.util.List<java.lang.Integer>> {
      public testList() {
        super("testList");
      }

      public testList_args getEmptyArgsInstance() {
        return new testList_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<java.util.List<java.lang.Integer>> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<java.util.List<java.lang.Integer>>() { 
          public void onComplete(java.util.List<java.lang.Integer> o) {
            testList_result result = new testList_result();
            result.success = o;
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testList_result result = new testList_result();
            if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testList_args args, org.apache.thrift.async.AsyncMethodCallback<java.util.List<java.lang.Integer>> resultHandler) throws org.apache.thrift.TException {
        iface.testList(args.thing,resultHandler);
      }
    }

    public static class testEnum<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testEnum_args, Numberz> {
      public testEnum() {
        super("testEnum");
      }

      public testEnum_args getEmptyArgsInstance() {
        return new testEnum_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<Numberz> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<Numberz>() { 
          public void onComplete(Numberz o) {
            testEnum_result result = new testEnum_result();
            result.success = o;
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testEnum_result result = new testEnum_result();
            if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testEnum_args args, org.apache.thrift.async.AsyncMethodCallback<Numberz> resultHandler) throws org.apache.thrift.TException {
        iface.testEnum(args.thing,resultHandler);
      }
    }

    public static class testTypedef<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testTypedef_args, java.lang.Long> {
      public testTypedef() {
        super("testTypedef");
      }

      public testTypedef_args getEmptyArgsInstance() {
        return new testTypedef_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<java.lang.Long> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<java.lang.Long>() { 
          public void onComplete(java.lang.Long o) {
            testTypedef_result result = new testTypedef_result();
            result.success = o;
            result.setSuccessIsSet(true);
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testTypedef_result result = new testTypedef_result();
            if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testTypedef_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.Long> resultHandler) throws org.apache.thrift.TException {
        iface.testTypedef(args.thing,resultHandler);
      }
    }

    public static class testMapMap<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testMapMap_args, java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>>> {
      public testMapMap() {
        super("testMapMap");
      }

      public testMapMap_args getEmptyArgsInstance() {
        return new testMapMap_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>>> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>>>() { 
          public void onComplete(java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>> o) {
            testMapMap_result result = new testMapMap_result();
            result.success = o;
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testMapMap_result result = new testMapMap_result();
            if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testMapMap_args args, org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>>> resultHandler) throws org.apache.thrift.TException {
        iface.testMapMap(args.hello,resultHandler);
      }
    }

    public static class testInsanity<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testInsanity_args, java.util.Map<java.lang.Long,java.util.Map<Numberz,Insanity>>> {
      public testInsanity() {
        super("testInsanity");
      }

      public testInsanity_args getEmptyArgsInstance() {
        return new testInsanity_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.Long,java.util.Map<Numberz,Insanity>>> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.Long,java.util.Map<Numberz,Insanity>>>() { 
          public void onComplete(java.util.Map<java.lang.Long,java.util.Map<Numberz,Insanity>> o) {
            testInsanity_result result = new testInsanity_result();
            result.success = o;
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testInsanity_result result = new testInsanity_result();
            if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testInsanity_args args, org.apache.thrift.async.AsyncMethodCallback<java.util.Map<java.lang.Long,java.util.Map<Numberz,Insanity>>> resultHandler) throws org.apache.thrift.TException {
        iface.testInsanity(args.argument,resultHandler);
      }
    }

    public static class testMulti<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testMulti_args, Xtruct> {
      public testMulti() {
        super("testMulti");
      }

      public testMulti_args getEmptyArgsInstance() {
        return new testMulti_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<Xtruct> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<Xtruct>() { 
          public void onComplete(Xtruct o) {
            testMulti_result result = new testMulti_result();
            result.success = o;
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testMulti_result result = new testMulti_result();
            if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testMulti_args args, org.apache.thrift.async.AsyncMethodCallback<Xtruct> resultHandler) throws org.apache.thrift.TException {
        iface.testMulti(args.arg0, args.arg1, args.arg2, args.arg3, args.arg4, args.arg5,resultHandler);
      }
    }

    public static class testException<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testException_args, Void> {
      public testException() {
        super("testException");
      }

      public testException_args getEmptyArgsInstance() {
        return new testException_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<Void> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<Void>() { 
          public void onComplete(Void o) {
            testException_result result = new testException_result();
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testException_result result = new testException_result();
            if (e instanceof Xception) {
              result.err1 = (Xception) e;
              result.setErr1IsSet(true);
              msg = result;
            } else if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testException_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
        iface.testException(args.arg,resultHandler);
      }
    }

    public static class testMultiException<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testMultiException_args, Xtruct> {
      public testMultiException() {
        super("testMultiException");
      }

      public testMultiException_args getEmptyArgsInstance() {
        return new testMultiException_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<Xtruct> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<Xtruct>() { 
          public void onComplete(Xtruct o) {
            testMultiException_result result = new testMultiException_result();
            result.success = o;
            try {
              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
            } catch (org.apache.thrift.transport.TTransportException e) {
              _LOGGER.error("TTransportException writing to internal frame buffer", e);
              fb.close();
            } catch (java.lang.Exception e) {
              _LOGGER.error("Exception writing to internal frame buffer", e);
              onError(e);
            }
          }
          public void onError(java.lang.Exception e) {
            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
            org.apache.thrift.TSerializable msg;
            testMultiException_result result = new testMultiException_result();
            if (e instanceof Xception) {
              result.err1 = (Xception) e;
              result.setErr1IsSet(true);
              msg = result;
            } else if (e instanceof Xception2) {
              result.err2 = (Xception2) e;
              result.setErr2IsSet(true);
              msg = result;
            } else if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
              return;
            } else if (e instanceof org.apache.thrift.TApplicationException) {
              _LOGGER.error("TApplicationException inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = (org.apache.thrift.TApplicationException)e;
            } else {
              _LOGGER.error("Exception inside handler", e);
              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
            }
            try {
              fcall.sendResponse(fb,msg,msgType,seqid);
            } catch (java.lang.Exception ex) {
              _LOGGER.error("Exception writing to internal frame buffer", ex);
              fb.close();
            }
          }
        };
      }

      protected boolean isOneway() {
        return false;
      }

      public void start(I iface, testMultiException_args args, org.apache.thrift.async.AsyncMethodCallback<Xtruct> resultHandler) throws org.apache.thrift.TException {
        iface.testMultiException(args.arg0, args.arg1,resultHandler);
      }
    }

    public static class testOneway<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, testOneway_args, Void> {
      public testOneway() {
        super("testOneway");
      }

      public testOneway_args getEmptyArgsInstance() {
        return new testOneway_args();
      }

      public org.apache.thrift.async.AsyncMethodCallback<Void> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
        final org.apache.thrift.AsyncProcessFunction fcall = this;
        return new org.apache.thrift.async.AsyncMethodCallback<Void>() { 
          public void onComplete(Void o) {
          }
          public void onError(java.lang.Exception e) {
            if (e instanceof org.apache.thrift.transport.TTransportException) {
              _LOGGER.error("TTransportException inside handler", e);
              fb.close();
            } else {
              _LOGGER.error("Exception inside oneway handler", e);
            }
          }
        };
      }

      protected boolean isOneway() {
        return true;
      }

      public void start(I iface, testOneway_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException {
        iface.testOneway(args.secondsToSleep,resultHandler);
      }
    }

  }

  public static class testVoid_args implements org.apache.thrift.TBase<testVoid_args, testVoid_args._Fields>, java.io.Serializable, Cloneable, Comparable<testVoid_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testVoid_args");


    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testVoid_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testVoid_argsTupleSchemeFactory();


    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
;

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testVoid_args.class, metaDataMap);
    }

    public testVoid_args() {
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testVoid_args(testVoid_args other) {
    }

    public testVoid_args deepCopy() {
      return new testVoid_args(this);
    }

    @Override
    public void clear() {
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testVoid_args)
        return this.equals((testVoid_args)that);
      return false;
    }

    public boolean equals(testVoid_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      return hashCode;
    }

    @Override
    public int compareTo(testVoid_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testVoid_args(");
      boolean first = true;

      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testVoid_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testVoid_argsStandardScheme getScheme() {
        return new testVoid_argsStandardScheme();
      }
    }

    private static class testVoid_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testVoid_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testVoid_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) {
            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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testVoid_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testVoid_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testVoid_argsTupleScheme getScheme() {
        return new testVoid_argsTupleScheme();
      }
    }

    private static class testVoid_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testVoid_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testVoid_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testVoid_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testVoid_result implements org.apache.thrift.TBase<testVoid_result, testVoid_result._Fields>, java.io.Serializable, Cloneable, Comparable<testVoid_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testVoid_result");


    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testVoid_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testVoid_resultTupleSchemeFactory();


    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
;

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testVoid_result.class, metaDataMap);
    }

    public testVoid_result() {
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testVoid_result(testVoid_result other) {
    }

    public testVoid_result deepCopy() {
      return new testVoid_result(this);
    }

    @Override
    public void clear() {
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testVoid_result)
        return this.equals((testVoid_result)that);
      return false;
    }

    public boolean equals(testVoid_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      return hashCode;
    }

    @Override
    public int compareTo(testVoid_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testVoid_result(");
      boolean first = true;

      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testVoid_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testVoid_resultStandardScheme getScheme() {
        return new testVoid_resultStandardScheme();
      }
    }

    private static class testVoid_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testVoid_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testVoid_result 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) {
            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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testVoid_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testVoid_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testVoid_resultTupleScheme getScheme() {
        return new testVoid_resultTupleScheme();
      }
    }

    private static class testVoid_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testVoid_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testVoid_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testVoid_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testString_args implements org.apache.thrift.TBase<testString_args, testString_args._Fields>, java.io.Serializable, Cloneable, Comparable<testString_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testString_args");

    private static final org.apache.thrift.protocol.TField THING_FIELD_DESC = new org.apache.thrift.protocol.TField("thing", org.apache.thrift.protocol.TType.STRING, (short)1);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testString_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testString_argsTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable java.lang.String thing; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      THING((short)1, "thing");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // THING
            return THING;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.THING, new org.apache.thrift.meta_data.FieldMetaData("thing", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testString_args.class, metaDataMap);
    }

    public testString_args() {
    }

    public testString_args(
      java.lang.String thing)
    {
      this();
      this.thing = thing;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testString_args(testString_args other) {
      if (other.isSetThing()) {
        this.thing = other.thing;
      }
    }

    public testString_args deepCopy() {
      return new testString_args(this);
    }

    @Override
    public void clear() {
      this.thing = null;
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.String getThing() {
      return this.thing;
    }

    public testString_args setThing(@org.apache.thrift.annotation.Nullable java.lang.String thing) {
      this.thing = thing;
      return this;
    }

    public void unsetThing() {
      this.thing = null;
    }

    /** Returns true if field thing is set (has been assigned a value) and false otherwise */
    public boolean isSetThing() {
      return this.thing != null;
    }

    public void setThingIsSet(boolean value) {
      if (!value) {
        this.thing = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case THING:
        if (value == null) {
          unsetThing();
        } else {
          setThing((java.lang.String)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case THING:
        return getThing();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case THING:
        return isSetThing();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testString_args)
        return this.equals((testString_args)that);
      return false;
    }

    public boolean equals(testString_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_thing = true && this.isSetThing();
      boolean that_present_thing = true && that.isSetThing();
      if (this_present_thing || that_present_thing) {
        if (!(this_present_thing && that_present_thing))
          return false;
        if (!this.thing.equals(that.thing))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetThing()) ? 131071 : 524287);
      if (isSetThing())
        hashCode = hashCode * 8191 + thing.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testString_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetThing(), other.isSetThing());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetThing()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.thing, other.thing);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testString_args(");
      boolean first = true;

      sb.append("thing:");
      if (this.thing == null) {
        sb.append("null");
      } else {
        sb.append(this.thing);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testString_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testString_argsStandardScheme getScheme() {
        return new testString_argsStandardScheme();
      }
    }

    private static class testString_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testString_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testString_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: // THING
              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                struct.thing = iprot.readString();
                struct.setThingIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testString_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.thing != null) {
          oprot.writeFieldBegin(THING_FIELD_DESC);
          oprot.writeString(struct.thing);
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testString_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testString_argsTupleScheme getScheme() {
        return new testString_argsTupleScheme();
      }
    }

    private static class testString_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testString_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testString_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetThing()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetThing()) {
          oprot.writeString(struct.thing);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testString_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.thing = iprot.readString();
          struct.setThingIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testString_result implements org.apache.thrift.TBase<testString_result, testString_result._Fields>, java.io.Serializable, Cloneable, Comparable<testString_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testString_result");

    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRING, (short)0);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testString_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testString_resultTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable java.lang.String success; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      SUCCESS((short)0, "success");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 0: // SUCCESS
            return SUCCESS;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testString_result.class, metaDataMap);
    }

    public testString_result() {
    }

    public testString_result(
      java.lang.String success)
    {
      this();
      this.success = success;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testString_result(testString_result other) {
      if (other.isSetSuccess()) {
        this.success = other.success;
      }
    }

    public testString_result deepCopy() {
      return new testString_result(this);
    }

    @Override
    public void clear() {
      this.success = null;
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.String getSuccess() {
      return this.success;
    }

    public testString_result setSuccess(@org.apache.thrift.annotation.Nullable java.lang.String success) {
      this.success = success;
      return this;
    }

    public void unsetSuccess() {
      this.success = null;
    }

    /** Returns true if field success is set (has been assigned a value) and false otherwise */
    public boolean isSetSuccess() {
      return this.success != null;
    }

    public void setSuccessIsSet(boolean value) {
      if (!value) {
        this.success = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case SUCCESS:
        if (value == null) {
          unsetSuccess();
        } else {
          setSuccess((java.lang.String)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case SUCCESS:
        return getSuccess();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case SUCCESS:
        return isSetSuccess();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testString_result)
        return this.equals((testString_result)that);
      return false;
    }

    public boolean equals(testString_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_success = true && this.isSetSuccess();
      boolean that_present_success = true && that.isSetSuccess();
      if (this_present_success || that_present_success) {
        if (!(this_present_success && that_present_success))
          return false;
        if (!this.success.equals(that.success))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
      if (isSetSuccess())
        hashCode = hashCode * 8191 + success.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testString_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetSuccess(), other.isSetSuccess());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetSuccess()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testString_result(");
      boolean first = true;

      sb.append("success:");
      if (this.success == null) {
        sb.append("null");
      } else {
        sb.append(this.success);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testString_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testString_resultStandardScheme getScheme() {
        return new testString_resultStandardScheme();
      }
    }

    private static class testString_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testString_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testString_result 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 0: // SUCCESS
              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                struct.success = iprot.readString();
                struct.setSuccessIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testString_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.success != null) {
          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
          oprot.writeString(struct.success);
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testString_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testString_resultTupleScheme getScheme() {
        return new testString_resultTupleScheme();
      }
    }

    private static class testString_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testString_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testString_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetSuccess()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetSuccess()) {
          oprot.writeString(struct.success);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testString_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.success = iprot.readString();
          struct.setSuccessIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testBool_args implements org.apache.thrift.TBase<testBool_args, testBool_args._Fields>, java.io.Serializable, Cloneable, Comparable<testBool_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testBool_args");

    private static final org.apache.thrift.protocol.TField THING_FIELD_DESC = new org.apache.thrift.protocol.TField("thing", org.apache.thrift.protocol.TType.BOOL, (short)1);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testBool_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testBool_argsTupleSchemeFactory();

    public boolean thing; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      THING((short)1, "thing");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // THING
            return THING;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    private static final int __THING_ISSET_ID = 0;
    private byte __isset_bitfield = 0;
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.THING, new org.apache.thrift.meta_data.FieldMetaData("thing", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testBool_args.class, metaDataMap);
    }

    public testBool_args() {
    }

    public testBool_args(
      boolean thing)
    {
      this();
      this.thing = thing;
      setThingIsSet(true);
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testBool_args(testBool_args other) {
      __isset_bitfield = other.__isset_bitfield;
      this.thing = other.thing;
    }

    public testBool_args deepCopy() {
      return new testBool_args(this);
    }

    @Override
    public void clear() {
      setThingIsSet(false);
      this.thing = false;
    }

    public boolean isThing() {
      return this.thing;
    }

    public testBool_args setThing(boolean thing) {
      this.thing = thing;
      setThingIsSet(true);
      return this;
    }

    public void unsetThing() {
      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __THING_ISSET_ID);
    }

    /** Returns true if field thing is set (has been assigned a value) and false otherwise */
    public boolean isSetThing() {
      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __THING_ISSET_ID);
    }

    public void setThingIsSet(boolean value) {
      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __THING_ISSET_ID, value);
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case THING:
        if (value == null) {
          unsetThing();
        } else {
          setThing((java.lang.Boolean)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case THING:
        return isThing();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case THING:
        return isSetThing();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testBool_args)
        return this.equals((testBool_args)that);
      return false;
    }

    public boolean equals(testBool_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_thing = true;
      boolean that_present_thing = true;
      if (this_present_thing || that_present_thing) {
        if (!(this_present_thing && that_present_thing))
          return false;
        if (this.thing != that.thing)
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((thing) ? 131071 : 524287);

      return hashCode;
    }

    @Override
    public int compareTo(testBool_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetThing(), other.isSetThing());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetThing()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.thing, other.thing);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testBool_args(");
      boolean first = true;

      sb.append("thing:");
      sb.append(this.thing);
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
        __isset_bitfield = 0;
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testBool_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testBool_argsStandardScheme getScheme() {
        return new testBool_argsStandardScheme();
      }
    }

    private static class testBool_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testBool_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testBool_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: // THING
              if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
                struct.thing = iprot.readBool();
                struct.setThingIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testBool_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        oprot.writeFieldBegin(THING_FIELD_DESC);
        oprot.writeBool(struct.thing);
        oprot.writeFieldEnd();
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testBool_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testBool_argsTupleScheme getScheme() {
        return new testBool_argsTupleScheme();
      }
    }

    private static class testBool_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testBool_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testBool_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetThing()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetThing()) {
          oprot.writeBool(struct.thing);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testBool_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.thing = iprot.readBool();
          struct.setThingIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testBool_result implements org.apache.thrift.TBase<testBool_result, testBool_result._Fields>, java.io.Serializable, Cloneable, Comparable<testBool_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testBool_result");

    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.BOOL, (short)0);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testBool_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testBool_resultTupleSchemeFactory();

    public boolean success; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      SUCCESS((short)0, "success");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 0: // SUCCESS
            return SUCCESS;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    private static final int __SUCCESS_ISSET_ID = 0;
    private byte __isset_bitfield = 0;
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testBool_result.class, metaDataMap);
    }

    public testBool_result() {
    }

    public testBool_result(
      boolean success)
    {
      this();
      this.success = success;
      setSuccessIsSet(true);
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testBool_result(testBool_result other) {
      __isset_bitfield = other.__isset_bitfield;
      this.success = other.success;
    }

    public testBool_result deepCopy() {
      return new testBool_result(this);
    }

    @Override
    public void clear() {
      setSuccessIsSet(false);
      this.success = false;
    }

    public boolean isSuccess() {
      return this.success;
    }

    public testBool_result setSuccess(boolean success) {
      this.success = success;
      setSuccessIsSet(true);
      return this;
    }

    public void unsetSuccess() {
      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __SUCCESS_ISSET_ID);
    }

    /** Returns true if field success is set (has been assigned a value) and false otherwise */
    public boolean isSetSuccess() {
      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
    }

    public void setSuccessIsSet(boolean value) {
      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case SUCCESS:
        if (value == null) {
          unsetSuccess();
        } else {
          setSuccess((java.lang.Boolean)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case SUCCESS:
        return isSuccess();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case SUCCESS:
        return isSetSuccess();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testBool_result)
        return this.equals((testBool_result)that);
      return false;
    }

    public boolean equals(testBool_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_success = true;
      boolean that_present_success = true;
      if (this_present_success || that_present_success) {
        if (!(this_present_success && that_present_success))
          return false;
        if (this.success != that.success)
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((success) ? 131071 : 524287);

      return hashCode;
    }

    @Override
    public int compareTo(testBool_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetSuccess(), other.isSetSuccess());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetSuccess()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testBool_result(");
      boolean first = true;

      sb.append("success:");
      sb.append(this.success);
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
        __isset_bitfield = 0;
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testBool_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testBool_resultStandardScheme getScheme() {
        return new testBool_resultStandardScheme();
      }
    }

    private static class testBool_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testBool_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testBool_result 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 0: // SUCCESS
              if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
                struct.success = iprot.readBool();
                struct.setSuccessIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testBool_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.isSetSuccess()) {
          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
          oprot.writeBool(struct.success);
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testBool_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testBool_resultTupleScheme getScheme() {
        return new testBool_resultTupleScheme();
      }
    }

    private static class testBool_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testBool_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testBool_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetSuccess()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetSuccess()) {
          oprot.writeBool(struct.success);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testBool_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.success = iprot.readBool();
          struct.setSuccessIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testByte_args implements org.apache.thrift.TBase<testByte_args, testByte_args._Fields>, java.io.Serializable, Cloneable, Comparable<testByte_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testByte_args");

    private static final org.apache.thrift.protocol.TField THING_FIELD_DESC = new org.apache.thrift.protocol.TField("thing", org.apache.thrift.protocol.TType.BYTE, (short)1);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testByte_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testByte_argsTupleSchemeFactory();

    public byte thing; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      THING((short)1, "thing");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // THING
            return THING;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    private static final int __THING_ISSET_ID = 0;
    private byte __isset_bitfield = 0;
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.THING, new org.apache.thrift.meta_data.FieldMetaData("thing", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BYTE)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testByte_args.class, metaDataMap);
    }

    public testByte_args() {
    }

    public testByte_args(
      byte thing)
    {
      this();
      this.thing = thing;
      setThingIsSet(true);
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testByte_args(testByte_args other) {
      __isset_bitfield = other.__isset_bitfield;
      this.thing = other.thing;
    }

    public testByte_args deepCopy() {
      return new testByte_args(this);
    }

    @Override
    public void clear() {
      setThingIsSet(false);
      this.thing = 0;
    }

    public byte getThing() {
      return this.thing;
    }

    public testByte_args setThing(byte thing) {
      this.thing = thing;
      setThingIsSet(true);
      return this;
    }

    public void unsetThing() {
      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __THING_ISSET_ID);
    }

    /** Returns true if field thing is set (has been assigned a value) and false otherwise */
    public boolean isSetThing() {
      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __THING_ISSET_ID);
    }

    public void setThingIsSet(boolean value) {
      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __THING_ISSET_ID, value);
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case THING:
        if (value == null) {
          unsetThing();
        } else {
          setThing((java.lang.Byte)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case THING:
        return getThing();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case THING:
        return isSetThing();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testByte_args)
        return this.equals((testByte_args)that);
      return false;
    }

    public boolean equals(testByte_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_thing = true;
      boolean that_present_thing = true;
      if (this_present_thing || that_present_thing) {
        if (!(this_present_thing && that_present_thing))
          return false;
        if (this.thing != that.thing)
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + (int) (thing);

      return hashCode;
    }

    @Override
    public int compareTo(testByte_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetThing(), other.isSetThing());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetThing()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.thing, other.thing);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testByte_args(");
      boolean first = true;

      sb.append("thing:");
      sb.append(this.thing);
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
        __isset_bitfield = 0;
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testByte_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testByte_argsStandardScheme getScheme() {
        return new testByte_argsStandardScheme();
      }
    }

    private static class testByte_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testByte_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testByte_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: // THING
              if (schemeField.type == org.apache.thrift.protocol.TType.BYTE) {
                struct.thing = iprot.readByte();
                struct.setThingIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testByte_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        oprot.writeFieldBegin(THING_FIELD_DESC);
        oprot.writeByte(struct.thing);
        oprot.writeFieldEnd();
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testByte_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testByte_argsTupleScheme getScheme() {
        return new testByte_argsTupleScheme();
      }
    }

    private static class testByte_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testByte_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testByte_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetThing()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetThing()) {
          oprot.writeByte(struct.thing);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testByte_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.thing = iprot.readByte();
          struct.setThingIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testByte_result implements org.apache.thrift.TBase<testByte_result, testByte_result._Fields>, java.io.Serializable, Cloneable, Comparable<testByte_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testByte_result");

    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.BYTE, (short)0);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testByte_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testByte_resultTupleSchemeFactory();

    public byte success; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      SUCCESS((short)0, "success");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 0: // SUCCESS
            return SUCCESS;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    private static final int __SUCCESS_ISSET_ID = 0;
    private byte __isset_bitfield = 0;
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BYTE)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testByte_result.class, metaDataMap);
    }

    public testByte_result() {
    }

    public testByte_result(
      byte success)
    {
      this();
      this.success = success;
      setSuccessIsSet(true);
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testByte_result(testByte_result other) {
      __isset_bitfield = other.__isset_bitfield;
      this.success = other.success;
    }

    public testByte_result deepCopy() {
      return new testByte_result(this);
    }

    @Override
    public void clear() {
      setSuccessIsSet(false);
      this.success = 0;
    }

    public byte getSuccess() {
      return this.success;
    }

    public testByte_result setSuccess(byte success) {
      this.success = success;
      setSuccessIsSet(true);
      return this;
    }

    public void unsetSuccess() {
      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __SUCCESS_ISSET_ID);
    }

    /** Returns true if field success is set (has been assigned a value) and false otherwise */
    public boolean isSetSuccess() {
      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
    }

    public void setSuccessIsSet(boolean value) {
      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case SUCCESS:
        if (value == null) {
          unsetSuccess();
        } else {
          setSuccess((java.lang.Byte)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case SUCCESS:
        return getSuccess();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case SUCCESS:
        return isSetSuccess();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testByte_result)
        return this.equals((testByte_result)that);
      return false;
    }

    public boolean equals(testByte_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_success = true;
      boolean that_present_success = true;
      if (this_present_success || that_present_success) {
        if (!(this_present_success && that_present_success))
          return false;
        if (this.success != that.success)
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + (int) (success);

      return hashCode;
    }

    @Override
    public int compareTo(testByte_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetSuccess(), other.isSetSuccess());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetSuccess()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testByte_result(");
      boolean first = true;

      sb.append("success:");
      sb.append(this.success);
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
        __isset_bitfield = 0;
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testByte_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testByte_resultStandardScheme getScheme() {
        return new testByte_resultStandardScheme();
      }
    }

    private static class testByte_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testByte_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testByte_result 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 0: // SUCCESS
              if (schemeField.type == org.apache.thrift.protocol.TType.BYTE) {
                struct.success = iprot.readByte();
                struct.setSuccessIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testByte_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.isSetSuccess()) {
          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
          oprot.writeByte(struct.success);
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testByte_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testByte_resultTupleScheme getScheme() {
        return new testByte_resultTupleScheme();
      }
    }

    private static class testByte_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testByte_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testByte_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetSuccess()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetSuccess()) {
          oprot.writeByte(struct.success);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testByte_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.success = iprot.readByte();
          struct.setSuccessIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testI32_args implements org.apache.thrift.TBase<testI32_args, testI32_args._Fields>, java.io.Serializable, Cloneable, Comparable<testI32_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testI32_args");

    private static final org.apache.thrift.protocol.TField THING_FIELD_DESC = new org.apache.thrift.protocol.TField("thing", org.apache.thrift.protocol.TType.I32, (short)1);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testI32_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testI32_argsTupleSchemeFactory();

    public int thing; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      THING((short)1, "thing");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // THING
            return THING;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    private static final int __THING_ISSET_ID = 0;
    private byte __isset_bitfield = 0;
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.THING, new org.apache.thrift.meta_data.FieldMetaData("thing", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testI32_args.class, metaDataMap);
    }

    public testI32_args() {
    }

    public testI32_args(
      int thing)
    {
      this();
      this.thing = thing;
      setThingIsSet(true);
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testI32_args(testI32_args other) {
      __isset_bitfield = other.__isset_bitfield;
      this.thing = other.thing;
    }

    public testI32_args deepCopy() {
      return new testI32_args(this);
    }

    @Override
    public void clear() {
      setThingIsSet(false);
      this.thing = 0;
    }

    public int getThing() {
      return this.thing;
    }

    public testI32_args setThing(int thing) {
      this.thing = thing;
      setThingIsSet(true);
      return this;
    }

    public void unsetThing() {
      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __THING_ISSET_ID);
    }

    /** Returns true if field thing is set (has been assigned a value) and false otherwise */
    public boolean isSetThing() {
      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __THING_ISSET_ID);
    }

    public void setThingIsSet(boolean value) {
      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __THING_ISSET_ID, value);
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case THING:
        if (value == null) {
          unsetThing();
        } else {
          setThing((java.lang.Integer)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case THING:
        return getThing();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case THING:
        return isSetThing();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testI32_args)
        return this.equals((testI32_args)that);
      return false;
    }

    public boolean equals(testI32_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_thing = true;
      boolean that_present_thing = true;
      if (this_present_thing || that_present_thing) {
        if (!(this_present_thing && that_present_thing))
          return false;
        if (this.thing != that.thing)
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + thing;

      return hashCode;
    }

    @Override
    public int compareTo(testI32_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetThing(), other.isSetThing());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetThing()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.thing, other.thing);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testI32_args(");
      boolean first = true;

      sb.append("thing:");
      sb.append(this.thing);
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
        __isset_bitfield = 0;
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testI32_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testI32_argsStandardScheme getScheme() {
        return new testI32_argsStandardScheme();
      }
    }

    private static class testI32_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testI32_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testI32_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: // THING
              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
                struct.thing = iprot.readI32();
                struct.setThingIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testI32_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        oprot.writeFieldBegin(THING_FIELD_DESC);
        oprot.writeI32(struct.thing);
        oprot.writeFieldEnd();
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testI32_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testI32_argsTupleScheme getScheme() {
        return new testI32_argsTupleScheme();
      }
    }

    private static class testI32_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testI32_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testI32_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetThing()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetThing()) {
          oprot.writeI32(struct.thing);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testI32_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.thing = iprot.readI32();
          struct.setThingIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testI32_result implements org.apache.thrift.TBase<testI32_result, testI32_result._Fields>, java.io.Serializable, Cloneable, Comparable<testI32_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testI32_result");

    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.I32, (short)0);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testI32_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testI32_resultTupleSchemeFactory();

    public int success; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      SUCCESS((short)0, "success");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 0: // SUCCESS
            return SUCCESS;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    private static final int __SUCCESS_ISSET_ID = 0;
    private byte __isset_bitfield = 0;
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testI32_result.class, metaDataMap);
    }

    public testI32_result() {
    }

    public testI32_result(
      int success)
    {
      this();
      this.success = success;
      setSuccessIsSet(true);
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testI32_result(testI32_result other) {
      __isset_bitfield = other.__isset_bitfield;
      this.success = other.success;
    }

    public testI32_result deepCopy() {
      return new testI32_result(this);
    }

    @Override
    public void clear() {
      setSuccessIsSet(false);
      this.success = 0;
    }

    public int getSuccess() {
      return this.success;
    }

    public testI32_result setSuccess(int success) {
      this.success = success;
      setSuccessIsSet(true);
      return this;
    }

    public void unsetSuccess() {
      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __SUCCESS_ISSET_ID);
    }

    /** Returns true if field success is set (has been assigned a value) and false otherwise */
    public boolean isSetSuccess() {
      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
    }

    public void setSuccessIsSet(boolean value) {
      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case SUCCESS:
        if (value == null) {
          unsetSuccess();
        } else {
          setSuccess((java.lang.Integer)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case SUCCESS:
        return getSuccess();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case SUCCESS:
        return isSetSuccess();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testI32_result)
        return this.equals((testI32_result)that);
      return false;
    }

    public boolean equals(testI32_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_success = true;
      boolean that_present_success = true;
      if (this_present_success || that_present_success) {
        if (!(this_present_success && that_present_success))
          return false;
        if (this.success != that.success)
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + success;

      return hashCode;
    }

    @Override
    public int compareTo(testI32_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetSuccess(), other.isSetSuccess());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetSuccess()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testI32_result(");
      boolean first = true;

      sb.append("success:");
      sb.append(this.success);
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
        __isset_bitfield = 0;
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testI32_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testI32_resultStandardScheme getScheme() {
        return new testI32_resultStandardScheme();
      }
    }

    private static class testI32_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testI32_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testI32_result 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 0: // SUCCESS
              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
                struct.success = iprot.readI32();
                struct.setSuccessIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testI32_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.isSetSuccess()) {
          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
          oprot.writeI32(struct.success);
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testI32_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testI32_resultTupleScheme getScheme() {
        return new testI32_resultTupleScheme();
      }
    }

    private static class testI32_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testI32_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testI32_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetSuccess()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetSuccess()) {
          oprot.writeI32(struct.success);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testI32_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.success = iprot.readI32();
          struct.setSuccessIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testI64_args implements org.apache.thrift.TBase<testI64_args, testI64_args._Fields>, java.io.Serializable, Cloneable, Comparable<testI64_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testI64_args");

    private static final org.apache.thrift.protocol.TField THING_FIELD_DESC = new org.apache.thrift.protocol.TField("thing", org.apache.thrift.protocol.TType.I64, (short)1);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testI64_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testI64_argsTupleSchemeFactory();

    public long thing; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      THING((short)1, "thing");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // THING
            return THING;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    private static final int __THING_ISSET_ID = 0;
    private byte __isset_bitfield = 0;
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.THING, new org.apache.thrift.meta_data.FieldMetaData("thing", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testI64_args.class, metaDataMap);
    }

    public testI64_args() {
    }

    public testI64_args(
      long thing)
    {
      this();
      this.thing = thing;
      setThingIsSet(true);
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testI64_args(testI64_args other) {
      __isset_bitfield = other.__isset_bitfield;
      this.thing = other.thing;
    }

    public testI64_args deepCopy() {
      return new testI64_args(this);
    }

    @Override
    public void clear() {
      setThingIsSet(false);
      this.thing = 0;
    }

    public long getThing() {
      return this.thing;
    }

    public testI64_args setThing(long thing) {
      this.thing = thing;
      setThingIsSet(true);
      return this;
    }

    public void unsetThing() {
      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __THING_ISSET_ID);
    }

    /** Returns true if field thing is set (has been assigned a value) and false otherwise */
    public boolean isSetThing() {
      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __THING_ISSET_ID);
    }

    public void setThingIsSet(boolean value) {
      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __THING_ISSET_ID, value);
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case THING:
        if (value == null) {
          unsetThing();
        } else {
          setThing((java.lang.Long)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case THING:
        return getThing();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case THING:
        return isSetThing();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testI64_args)
        return this.equals((testI64_args)that);
      return false;
    }

    public boolean equals(testI64_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_thing = true;
      boolean that_present_thing = true;
      if (this_present_thing || that_present_thing) {
        if (!(this_present_thing && that_present_thing))
          return false;
        if (this.thing != that.thing)
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(thing);

      return hashCode;
    }

    @Override
    public int compareTo(testI64_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetThing(), other.isSetThing());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetThing()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.thing, other.thing);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testI64_args(");
      boolean first = true;

      sb.append("thing:");
      sb.append(this.thing);
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
        __isset_bitfield = 0;
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testI64_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testI64_argsStandardScheme getScheme() {
        return new testI64_argsStandardScheme();
      }
    }

    private static class testI64_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testI64_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testI64_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: // THING
              if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
                struct.thing = iprot.readI64();
                struct.setThingIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testI64_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        oprot.writeFieldBegin(THING_FIELD_DESC);
        oprot.writeI64(struct.thing);
        oprot.writeFieldEnd();
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testI64_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testI64_argsTupleScheme getScheme() {
        return new testI64_argsTupleScheme();
      }
    }

    private static class testI64_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testI64_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testI64_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetThing()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetThing()) {
          oprot.writeI64(struct.thing);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testI64_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.thing = iprot.readI64();
          struct.setThingIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testI64_result implements org.apache.thrift.TBase<testI64_result, testI64_result._Fields>, java.io.Serializable, Cloneable, Comparable<testI64_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testI64_result");

    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.I64, (short)0);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testI64_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testI64_resultTupleSchemeFactory();

    public long success; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      SUCCESS((short)0, "success");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 0: // SUCCESS
            return SUCCESS;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    private static final int __SUCCESS_ISSET_ID = 0;
    private byte __isset_bitfield = 0;
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testI64_result.class, metaDataMap);
    }

    public testI64_result() {
    }

    public testI64_result(
      long success)
    {
      this();
      this.success = success;
      setSuccessIsSet(true);
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testI64_result(testI64_result other) {
      __isset_bitfield = other.__isset_bitfield;
      this.success = other.success;
    }

    public testI64_result deepCopy() {
      return new testI64_result(this);
    }

    @Override
    public void clear() {
      setSuccessIsSet(false);
      this.success = 0;
    }

    public long getSuccess() {
      return this.success;
    }

    public testI64_result setSuccess(long success) {
      this.success = success;
      setSuccessIsSet(true);
      return this;
    }

    public void unsetSuccess() {
      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __SUCCESS_ISSET_ID);
    }

    /** Returns true if field success is set (has been assigned a value) and false otherwise */
    public boolean isSetSuccess() {
      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
    }

    public void setSuccessIsSet(boolean value) {
      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case SUCCESS:
        if (value == null) {
          unsetSuccess();
        } else {
          setSuccess((java.lang.Long)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case SUCCESS:
        return getSuccess();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case SUCCESS:
        return isSetSuccess();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testI64_result)
        return this.equals((testI64_result)that);
      return false;
    }

    public boolean equals(testI64_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_success = true;
      boolean that_present_success = true;
      if (this_present_success || that_present_success) {
        if (!(this_present_success && that_present_success))
          return false;
        if (this.success != that.success)
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(success);

      return hashCode;
    }

    @Override
    public int compareTo(testI64_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetSuccess(), other.isSetSuccess());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetSuccess()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testI64_result(");
      boolean first = true;

      sb.append("success:");
      sb.append(this.success);
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
        __isset_bitfield = 0;
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testI64_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testI64_resultStandardScheme getScheme() {
        return new testI64_resultStandardScheme();
      }
    }

    private static class testI64_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testI64_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testI64_result 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 0: // SUCCESS
              if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
                struct.success = iprot.readI64();
                struct.setSuccessIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testI64_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.isSetSuccess()) {
          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
          oprot.writeI64(struct.success);
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testI64_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testI64_resultTupleScheme getScheme() {
        return new testI64_resultTupleScheme();
      }
    }

    private static class testI64_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testI64_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testI64_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetSuccess()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetSuccess()) {
          oprot.writeI64(struct.success);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testI64_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.success = iprot.readI64();
          struct.setSuccessIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testDouble_args implements org.apache.thrift.TBase<testDouble_args, testDouble_args._Fields>, java.io.Serializable, Cloneable, Comparable<testDouble_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testDouble_args");

    private static final org.apache.thrift.protocol.TField THING_FIELD_DESC = new org.apache.thrift.protocol.TField("thing", org.apache.thrift.protocol.TType.DOUBLE, (short)1);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testDouble_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testDouble_argsTupleSchemeFactory();

    public double thing; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      THING((short)1, "thing");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // THING
            return THING;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    private static final int __THING_ISSET_ID = 0;
    private byte __isset_bitfield = 0;
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.THING, new org.apache.thrift.meta_data.FieldMetaData("thing", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.DOUBLE)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testDouble_args.class, metaDataMap);
    }

    public testDouble_args() {
    }

    public testDouble_args(
      double thing)
    {
      this();
      this.thing = thing;
      setThingIsSet(true);
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testDouble_args(testDouble_args other) {
      __isset_bitfield = other.__isset_bitfield;
      this.thing = other.thing;
    }

    public testDouble_args deepCopy() {
      return new testDouble_args(this);
    }

    @Override
    public void clear() {
      setThingIsSet(false);
      this.thing = 0.0;
    }

    public double getThing() {
      return this.thing;
    }

    public testDouble_args setThing(double thing) {
      this.thing = thing;
      setThingIsSet(true);
      return this;
    }

    public void unsetThing() {
      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __THING_ISSET_ID);
    }

    /** Returns true if field thing is set (has been assigned a value) and false otherwise */
    public boolean isSetThing() {
      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __THING_ISSET_ID);
    }

    public void setThingIsSet(boolean value) {
      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __THING_ISSET_ID, value);
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case THING:
        if (value == null) {
          unsetThing();
        } else {
          setThing((java.lang.Double)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case THING:
        return getThing();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case THING:
        return isSetThing();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testDouble_args)
        return this.equals((testDouble_args)that);
      return false;
    }

    public boolean equals(testDouble_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_thing = true;
      boolean that_present_thing = true;
      if (this_present_thing || that_present_thing) {
        if (!(this_present_thing && that_present_thing))
          return false;
        if (this.thing != that.thing)
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(thing);

      return hashCode;
    }

    @Override
    public int compareTo(testDouble_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetThing(), other.isSetThing());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetThing()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.thing, other.thing);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testDouble_args(");
      boolean first = true;

      sb.append("thing:");
      sb.append(this.thing);
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
        __isset_bitfield = 0;
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testDouble_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testDouble_argsStandardScheme getScheme() {
        return new testDouble_argsStandardScheme();
      }
    }

    private static class testDouble_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testDouble_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testDouble_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: // THING
              if (schemeField.type == org.apache.thrift.protocol.TType.DOUBLE) {
                struct.thing = iprot.readDouble();
                struct.setThingIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testDouble_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        oprot.writeFieldBegin(THING_FIELD_DESC);
        oprot.writeDouble(struct.thing);
        oprot.writeFieldEnd();
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testDouble_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testDouble_argsTupleScheme getScheme() {
        return new testDouble_argsTupleScheme();
      }
    }

    private static class testDouble_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testDouble_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testDouble_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetThing()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetThing()) {
          oprot.writeDouble(struct.thing);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testDouble_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.thing = iprot.readDouble();
          struct.setThingIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testDouble_result implements org.apache.thrift.TBase<testDouble_result, testDouble_result._Fields>, java.io.Serializable, Cloneable, Comparable<testDouble_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testDouble_result");

    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.DOUBLE, (short)0);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testDouble_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testDouble_resultTupleSchemeFactory();

    public double success; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      SUCCESS((short)0, "success");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 0: // SUCCESS
            return SUCCESS;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    private static final int __SUCCESS_ISSET_ID = 0;
    private byte __isset_bitfield = 0;
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.DOUBLE)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testDouble_result.class, metaDataMap);
    }

    public testDouble_result() {
    }

    public testDouble_result(
      double success)
    {
      this();
      this.success = success;
      setSuccessIsSet(true);
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testDouble_result(testDouble_result other) {
      __isset_bitfield = other.__isset_bitfield;
      this.success = other.success;
    }

    public testDouble_result deepCopy() {
      return new testDouble_result(this);
    }

    @Override
    public void clear() {
      setSuccessIsSet(false);
      this.success = 0.0;
    }

    public double getSuccess() {
      return this.success;
    }

    public testDouble_result setSuccess(double success) {
      this.success = success;
      setSuccessIsSet(true);
      return this;
    }

    public void unsetSuccess() {
      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __SUCCESS_ISSET_ID);
    }

    /** Returns true if field success is set (has been assigned a value) and false otherwise */
    public boolean isSetSuccess() {
      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
    }

    public void setSuccessIsSet(boolean value) {
      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case SUCCESS:
        if (value == null) {
          unsetSuccess();
        } else {
          setSuccess((java.lang.Double)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case SUCCESS:
        return getSuccess();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case SUCCESS:
        return isSetSuccess();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testDouble_result)
        return this.equals((testDouble_result)that);
      return false;
    }

    public boolean equals(testDouble_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_success = true;
      boolean that_present_success = true;
      if (this_present_success || that_present_success) {
        if (!(this_present_success && that_present_success))
          return false;
        if (this.success != that.success)
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(success);

      return hashCode;
    }

    @Override
    public int compareTo(testDouble_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetSuccess(), other.isSetSuccess());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetSuccess()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testDouble_result(");
      boolean first = true;

      sb.append("success:");
      sb.append(this.success);
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
        __isset_bitfield = 0;
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testDouble_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testDouble_resultStandardScheme getScheme() {
        return new testDouble_resultStandardScheme();
      }
    }

    private static class testDouble_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testDouble_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testDouble_result 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 0: // SUCCESS
              if (schemeField.type == org.apache.thrift.protocol.TType.DOUBLE) {
                struct.success = iprot.readDouble();
                struct.setSuccessIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testDouble_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.isSetSuccess()) {
          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
          oprot.writeDouble(struct.success);
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testDouble_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testDouble_resultTupleScheme getScheme() {
        return new testDouble_resultTupleScheme();
      }
    }

    private static class testDouble_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testDouble_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testDouble_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetSuccess()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetSuccess()) {
          oprot.writeDouble(struct.success);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testDouble_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.success = iprot.readDouble();
          struct.setSuccessIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testBinary_args implements org.apache.thrift.TBase<testBinary_args, testBinary_args._Fields>, java.io.Serializable, Cloneable, Comparable<testBinary_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testBinary_args");

    private static final org.apache.thrift.protocol.TField THING_FIELD_DESC = new org.apache.thrift.protocol.TField("thing", org.apache.thrift.protocol.TType.STRING, (short)1);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testBinary_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testBinary_argsTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable java.nio.ByteBuffer thing; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      THING((short)1, "thing");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // THING
            return THING;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.THING, new org.apache.thrift.meta_data.FieldMetaData("thing", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING          , true)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testBinary_args.class, metaDataMap);
    }

    public testBinary_args() {
    }

    public testBinary_args(
      java.nio.ByteBuffer thing)
    {
      this();
      this.thing = org.apache.thrift.TBaseHelper.copyBinary(thing);
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testBinary_args(testBinary_args other) {
      if (other.isSetThing()) {
        this.thing = org.apache.thrift.TBaseHelper.copyBinary(other.thing);
      }
    }

    public testBinary_args deepCopy() {
      return new testBinary_args(this);
    }

    @Override
    public void clear() {
      this.thing = null;
    }

    public byte[] getThing() {
      setThing(org.apache.thrift.TBaseHelper.rightSize(thing));
      return thing == null ? null : thing.array();
    }

    public java.nio.ByteBuffer bufferForThing() {
      return org.apache.thrift.TBaseHelper.copyBinary(thing);
    }

    public testBinary_args setThing(byte[] thing) {
      this.thing = thing == null ? (java.nio.ByteBuffer)null     : java.nio.ByteBuffer.wrap(thing.clone());
      return this;
    }

    public testBinary_args setThing(@org.apache.thrift.annotation.Nullable java.nio.ByteBuffer thing) {
      this.thing = org.apache.thrift.TBaseHelper.copyBinary(thing);
      return this;
    }

    public void unsetThing() {
      this.thing = null;
    }

    /** Returns true if field thing is set (has been assigned a value) and false otherwise */
    public boolean isSetThing() {
      return this.thing != null;
    }

    public void setThingIsSet(boolean value) {
      if (!value) {
        this.thing = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case THING:
        if (value == null) {
          unsetThing();
        } else {
          if (value instanceof byte[]) {
            setThing((byte[])value);
          } else {
            setThing((java.nio.ByteBuffer)value);
          }
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case THING:
        return getThing();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case THING:
        return isSetThing();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testBinary_args)
        return this.equals((testBinary_args)that);
      return false;
    }

    public boolean equals(testBinary_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_thing = true && this.isSetThing();
      boolean that_present_thing = true && that.isSetThing();
      if (this_present_thing || that_present_thing) {
        if (!(this_present_thing && that_present_thing))
          return false;
        if (!this.thing.equals(that.thing))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetThing()) ? 131071 : 524287);
      if (isSetThing())
        hashCode = hashCode * 8191 + thing.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testBinary_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetThing(), other.isSetThing());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetThing()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.thing, other.thing);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testBinary_args(");
      boolean first = true;

      sb.append("thing:");
      if (this.thing == null) {
        sb.append("null");
      } else {
        org.apache.thrift.TBaseHelper.toString(this.thing, sb);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testBinary_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testBinary_argsStandardScheme getScheme() {
        return new testBinary_argsStandardScheme();
      }
    }

    private static class testBinary_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testBinary_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testBinary_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: // THING
              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                struct.thing = iprot.readBinary();
                struct.setThingIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testBinary_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.thing != null) {
          oprot.writeFieldBegin(THING_FIELD_DESC);
          oprot.writeBinary(struct.thing);
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testBinary_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testBinary_argsTupleScheme getScheme() {
        return new testBinary_argsTupleScheme();
      }
    }

    private static class testBinary_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testBinary_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testBinary_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetThing()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetThing()) {
          oprot.writeBinary(struct.thing);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testBinary_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.thing = iprot.readBinary();
          struct.setThingIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testBinary_result implements org.apache.thrift.TBase<testBinary_result, testBinary_result._Fields>, java.io.Serializable, Cloneable, Comparable<testBinary_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testBinary_result");

    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRING, (short)0);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testBinary_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testBinary_resultTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable java.nio.ByteBuffer success; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      SUCCESS((short)0, "success");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 0: // SUCCESS
            return SUCCESS;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING          , true)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testBinary_result.class, metaDataMap);
    }

    public testBinary_result() {
    }

    public testBinary_result(
      java.nio.ByteBuffer success)
    {
      this();
      this.success = org.apache.thrift.TBaseHelper.copyBinary(success);
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testBinary_result(testBinary_result other) {
      if (other.isSetSuccess()) {
        this.success = org.apache.thrift.TBaseHelper.copyBinary(other.success);
      }
    }

    public testBinary_result deepCopy() {
      return new testBinary_result(this);
    }

    @Override
    public void clear() {
      this.success = null;
    }

    public byte[] getSuccess() {
      setSuccess(org.apache.thrift.TBaseHelper.rightSize(success));
      return success == null ? null : success.array();
    }

    public java.nio.ByteBuffer bufferForSuccess() {
      return org.apache.thrift.TBaseHelper.copyBinary(success);
    }

    public testBinary_result setSuccess(byte[] success) {
      this.success = success == null ? (java.nio.ByteBuffer)null     : java.nio.ByteBuffer.wrap(success.clone());
      return this;
    }

    public testBinary_result setSuccess(@org.apache.thrift.annotation.Nullable java.nio.ByteBuffer success) {
      this.success = org.apache.thrift.TBaseHelper.copyBinary(success);
      return this;
    }

    public void unsetSuccess() {
      this.success = null;
    }

    /** Returns true if field success is set (has been assigned a value) and false otherwise */
    public boolean isSetSuccess() {
      return this.success != null;
    }

    public void setSuccessIsSet(boolean value) {
      if (!value) {
        this.success = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case SUCCESS:
        if (value == null) {
          unsetSuccess();
        } else {
          if (value instanceof byte[]) {
            setSuccess((byte[])value);
          } else {
            setSuccess((java.nio.ByteBuffer)value);
          }
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case SUCCESS:
        return getSuccess();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case SUCCESS:
        return isSetSuccess();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testBinary_result)
        return this.equals((testBinary_result)that);
      return false;
    }

    public boolean equals(testBinary_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_success = true && this.isSetSuccess();
      boolean that_present_success = true && that.isSetSuccess();
      if (this_present_success || that_present_success) {
        if (!(this_present_success && that_present_success))
          return false;
        if (!this.success.equals(that.success))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
      if (isSetSuccess())
        hashCode = hashCode * 8191 + success.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testBinary_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetSuccess(), other.isSetSuccess());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetSuccess()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testBinary_result(");
      boolean first = true;

      sb.append("success:");
      if (this.success == null) {
        sb.append("null");
      } else {
        org.apache.thrift.TBaseHelper.toString(this.success, sb);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testBinary_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testBinary_resultStandardScheme getScheme() {
        return new testBinary_resultStandardScheme();
      }
    }

    private static class testBinary_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testBinary_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testBinary_result 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 0: // SUCCESS
              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                struct.success = iprot.readBinary();
                struct.setSuccessIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testBinary_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.success != null) {
          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
          oprot.writeBinary(struct.success);
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testBinary_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testBinary_resultTupleScheme getScheme() {
        return new testBinary_resultTupleScheme();
      }
    }

    private static class testBinary_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testBinary_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testBinary_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetSuccess()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetSuccess()) {
          oprot.writeBinary(struct.success);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testBinary_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.success = iprot.readBinary();
          struct.setSuccessIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testStruct_args implements org.apache.thrift.TBase<testStruct_args, testStruct_args._Fields>, java.io.Serializable, Cloneable, Comparable<testStruct_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testStruct_args");

    private static final org.apache.thrift.protocol.TField THING_FIELD_DESC = new org.apache.thrift.protocol.TField("thing", org.apache.thrift.protocol.TType.STRUCT, (short)1);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testStruct_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testStruct_argsTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable Xtruct thing; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      THING((short)1, "thing");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // THING
            return THING;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.THING, new org.apache.thrift.meta_data.FieldMetaData("thing", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Xtruct.class)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testStruct_args.class, metaDataMap);
    }

    public testStruct_args() {
    }

    public testStruct_args(
      Xtruct thing)
    {
      this();
      this.thing = thing;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testStruct_args(testStruct_args other) {
      if (other.isSetThing()) {
        this.thing = new Xtruct(other.thing);
      }
    }

    public testStruct_args deepCopy() {
      return new testStruct_args(this);
    }

    @Override
    public void clear() {
      this.thing = null;
    }

    @org.apache.thrift.annotation.Nullable
    public Xtruct getThing() {
      return this.thing;
    }

    public testStruct_args setThing(@org.apache.thrift.annotation.Nullable Xtruct thing) {
      this.thing = thing;
      return this;
    }

    public void unsetThing() {
      this.thing = null;
    }

    /** Returns true if field thing is set (has been assigned a value) and false otherwise */
    public boolean isSetThing() {
      return this.thing != null;
    }

    public void setThingIsSet(boolean value) {
      if (!value) {
        this.thing = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case THING:
        if (value == null) {
          unsetThing();
        } else {
          setThing((Xtruct)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case THING:
        return getThing();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case THING:
        return isSetThing();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testStruct_args)
        return this.equals((testStruct_args)that);
      return false;
    }

    public boolean equals(testStruct_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_thing = true && this.isSetThing();
      boolean that_present_thing = true && that.isSetThing();
      if (this_present_thing || that_present_thing) {
        if (!(this_present_thing && that_present_thing))
          return false;
        if (!this.thing.equals(that.thing))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetThing()) ? 131071 : 524287);
      if (isSetThing())
        hashCode = hashCode * 8191 + thing.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testStruct_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetThing(), other.isSetThing());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetThing()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.thing, other.thing);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testStruct_args(");
      boolean first = true;

      sb.append("thing:");
      if (this.thing == null) {
        sb.append("null");
      } else {
        sb.append(this.thing);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
      if (thing != null) {
        thing.validate();
      }
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testStruct_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testStruct_argsStandardScheme getScheme() {
        return new testStruct_argsStandardScheme();
      }
    }

    private static class testStruct_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testStruct_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testStruct_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: // THING
              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                struct.thing = new Xtruct();
                struct.thing.read(iprot);
                struct.setThingIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testStruct_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.thing != null) {
          oprot.writeFieldBegin(THING_FIELD_DESC);
          struct.thing.write(oprot);
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testStruct_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testStruct_argsTupleScheme getScheme() {
        return new testStruct_argsTupleScheme();
      }
    }

    private static class testStruct_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testStruct_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testStruct_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetThing()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetThing()) {
          struct.thing.write(oprot);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testStruct_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.thing = new Xtruct();
          struct.thing.read(iprot);
          struct.setThingIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testStruct_result implements org.apache.thrift.TBase<testStruct_result, testStruct_result._Fields>, java.io.Serializable, Cloneable, Comparable<testStruct_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testStruct_result");

    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRUCT, (short)0);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testStruct_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testStruct_resultTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable Xtruct success; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      SUCCESS((short)0, "success");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 0: // SUCCESS
            return SUCCESS;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Xtruct.class)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testStruct_result.class, metaDataMap);
    }

    public testStruct_result() {
    }

    public testStruct_result(
      Xtruct success)
    {
      this();
      this.success = success;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testStruct_result(testStruct_result other) {
      if (other.isSetSuccess()) {
        this.success = new Xtruct(other.success);
      }
    }

    public testStruct_result deepCopy() {
      return new testStruct_result(this);
    }

    @Override
    public void clear() {
      this.success = null;
    }

    @org.apache.thrift.annotation.Nullable
    public Xtruct getSuccess() {
      return this.success;
    }

    public testStruct_result setSuccess(@org.apache.thrift.annotation.Nullable Xtruct success) {
      this.success = success;
      return this;
    }

    public void unsetSuccess() {
      this.success = null;
    }

    /** Returns true if field success is set (has been assigned a value) and false otherwise */
    public boolean isSetSuccess() {
      return this.success != null;
    }

    public void setSuccessIsSet(boolean value) {
      if (!value) {
        this.success = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case SUCCESS:
        if (value == null) {
          unsetSuccess();
        } else {
          setSuccess((Xtruct)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case SUCCESS:
        return getSuccess();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case SUCCESS:
        return isSetSuccess();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testStruct_result)
        return this.equals((testStruct_result)that);
      return false;
    }

    public boolean equals(testStruct_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_success = true && this.isSetSuccess();
      boolean that_present_success = true && that.isSetSuccess();
      if (this_present_success || that_present_success) {
        if (!(this_present_success && that_present_success))
          return false;
        if (!this.success.equals(that.success))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
      if (isSetSuccess())
        hashCode = hashCode * 8191 + success.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testStruct_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetSuccess(), other.isSetSuccess());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetSuccess()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testStruct_result(");
      boolean first = true;

      sb.append("success:");
      if (this.success == null) {
        sb.append("null");
      } else {
        sb.append(this.success);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
      if (success != null) {
        success.validate();
      }
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testStruct_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testStruct_resultStandardScheme getScheme() {
        return new testStruct_resultStandardScheme();
      }
    }

    private static class testStruct_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testStruct_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testStruct_result 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 0: // SUCCESS
              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                struct.success = new Xtruct();
                struct.success.read(iprot);
                struct.setSuccessIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testStruct_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.success != null) {
          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
          struct.success.write(oprot);
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testStruct_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testStruct_resultTupleScheme getScheme() {
        return new testStruct_resultTupleScheme();
      }
    }

    private static class testStruct_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testStruct_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testStruct_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetSuccess()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetSuccess()) {
          struct.success.write(oprot);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testStruct_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.success = new Xtruct();
          struct.success.read(iprot);
          struct.setSuccessIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testNest_args implements org.apache.thrift.TBase<testNest_args, testNest_args._Fields>, java.io.Serializable, Cloneable, Comparable<testNest_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testNest_args");

    private static final org.apache.thrift.protocol.TField THING_FIELD_DESC = new org.apache.thrift.protocol.TField("thing", org.apache.thrift.protocol.TType.STRUCT, (short)1);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testNest_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testNest_argsTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable Xtruct2 thing; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      THING((short)1, "thing");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // THING
            return THING;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.THING, new org.apache.thrift.meta_data.FieldMetaData("thing", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Xtruct2.class)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testNest_args.class, metaDataMap);
    }

    public testNest_args() {
    }

    public testNest_args(
      Xtruct2 thing)
    {
      this();
      this.thing = thing;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testNest_args(testNest_args other) {
      if (other.isSetThing()) {
        this.thing = new Xtruct2(other.thing);
      }
    }

    public testNest_args deepCopy() {
      return new testNest_args(this);
    }

    @Override
    public void clear() {
      this.thing = null;
    }

    @org.apache.thrift.annotation.Nullable
    public Xtruct2 getThing() {
      return this.thing;
    }

    public testNest_args setThing(@org.apache.thrift.annotation.Nullable Xtruct2 thing) {
      this.thing = thing;
      return this;
    }

    public void unsetThing() {
      this.thing = null;
    }

    /** Returns true if field thing is set (has been assigned a value) and false otherwise */
    public boolean isSetThing() {
      return this.thing != null;
    }

    public void setThingIsSet(boolean value) {
      if (!value) {
        this.thing = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case THING:
        if (value == null) {
          unsetThing();
        } else {
          setThing((Xtruct2)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case THING:
        return getThing();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case THING:
        return isSetThing();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testNest_args)
        return this.equals((testNest_args)that);
      return false;
    }

    public boolean equals(testNest_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_thing = true && this.isSetThing();
      boolean that_present_thing = true && that.isSetThing();
      if (this_present_thing || that_present_thing) {
        if (!(this_present_thing && that_present_thing))
          return false;
        if (!this.thing.equals(that.thing))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetThing()) ? 131071 : 524287);
      if (isSetThing())
        hashCode = hashCode * 8191 + thing.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testNest_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetThing(), other.isSetThing());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetThing()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.thing, other.thing);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testNest_args(");
      boolean first = true;

      sb.append("thing:");
      if (this.thing == null) {
        sb.append("null");
      } else {
        sb.append(this.thing);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
      if (thing != null) {
        thing.validate();
      }
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testNest_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testNest_argsStandardScheme getScheme() {
        return new testNest_argsStandardScheme();
      }
    }

    private static class testNest_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testNest_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testNest_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: // THING
              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                struct.thing = new Xtruct2();
                struct.thing.read(iprot);
                struct.setThingIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testNest_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.thing != null) {
          oprot.writeFieldBegin(THING_FIELD_DESC);
          struct.thing.write(oprot);
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testNest_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testNest_argsTupleScheme getScheme() {
        return new testNest_argsTupleScheme();
      }
    }

    private static class testNest_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testNest_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testNest_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetThing()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetThing()) {
          struct.thing.write(oprot);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testNest_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.thing = new Xtruct2();
          struct.thing.read(iprot);
          struct.setThingIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testNest_result implements org.apache.thrift.TBase<testNest_result, testNest_result._Fields>, java.io.Serializable, Cloneable, Comparable<testNest_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testNest_result");

    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRUCT, (short)0);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testNest_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testNest_resultTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable Xtruct2 success; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      SUCCESS((short)0, "success");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 0: // SUCCESS
            return SUCCESS;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Xtruct2.class)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testNest_result.class, metaDataMap);
    }

    public testNest_result() {
    }

    public testNest_result(
      Xtruct2 success)
    {
      this();
      this.success = success;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testNest_result(testNest_result other) {
      if (other.isSetSuccess()) {
        this.success = new Xtruct2(other.success);
      }
    }

    public testNest_result deepCopy() {
      return new testNest_result(this);
    }

    @Override
    public void clear() {
      this.success = null;
    }

    @org.apache.thrift.annotation.Nullable
    public Xtruct2 getSuccess() {
      return this.success;
    }

    public testNest_result setSuccess(@org.apache.thrift.annotation.Nullable Xtruct2 success) {
      this.success = success;
      return this;
    }

    public void unsetSuccess() {
      this.success = null;
    }

    /** Returns true if field success is set (has been assigned a value) and false otherwise */
    public boolean isSetSuccess() {
      return this.success != null;
    }

    public void setSuccessIsSet(boolean value) {
      if (!value) {
        this.success = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case SUCCESS:
        if (value == null) {
          unsetSuccess();
        } else {
          setSuccess((Xtruct2)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case SUCCESS:
        return getSuccess();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case SUCCESS:
        return isSetSuccess();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testNest_result)
        return this.equals((testNest_result)that);
      return false;
    }

    public boolean equals(testNest_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_success = true && this.isSetSuccess();
      boolean that_present_success = true && that.isSetSuccess();
      if (this_present_success || that_present_success) {
        if (!(this_present_success && that_present_success))
          return false;
        if (!this.success.equals(that.success))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
      if (isSetSuccess())
        hashCode = hashCode * 8191 + success.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testNest_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetSuccess(), other.isSetSuccess());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetSuccess()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testNest_result(");
      boolean first = true;

      sb.append("success:");
      if (this.success == null) {
        sb.append("null");
      } else {
        sb.append(this.success);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
      if (success != null) {
        success.validate();
      }
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testNest_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testNest_resultStandardScheme getScheme() {
        return new testNest_resultStandardScheme();
      }
    }

    private static class testNest_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testNest_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testNest_result 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 0: // SUCCESS
              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                struct.success = new Xtruct2();
                struct.success.read(iprot);
                struct.setSuccessIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testNest_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.success != null) {
          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
          struct.success.write(oprot);
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testNest_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testNest_resultTupleScheme getScheme() {
        return new testNest_resultTupleScheme();
      }
    }

    private static class testNest_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testNest_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testNest_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetSuccess()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetSuccess()) {
          struct.success.write(oprot);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testNest_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.success = new Xtruct2();
          struct.success.read(iprot);
          struct.setSuccessIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testMap_args implements org.apache.thrift.TBase<testMap_args, testMap_args._Fields>, java.io.Serializable, Cloneable, Comparable<testMap_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testMap_args");

    private static final org.apache.thrift.protocol.TField THING_FIELD_DESC = new org.apache.thrift.protocol.TField("thing", org.apache.thrift.protocol.TType.MAP, (short)1);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testMap_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testMap_argsTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.Integer,java.lang.Integer> thing; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      THING((short)1, "thing");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // THING
            return THING;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.THING, new org.apache.thrift.meta_data.FieldMetaData("thing", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
              new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32), 
              new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32))));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testMap_args.class, metaDataMap);
    }

    public testMap_args() {
    }

    public testMap_args(
      java.util.Map<java.lang.Integer,java.lang.Integer> thing)
    {
      this();
      this.thing = thing;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testMap_args(testMap_args other) {
      if (other.isSetThing()) {
        java.util.Map<java.lang.Integer,java.lang.Integer> __this__thing = new java.util.HashMap<java.lang.Integer,java.lang.Integer>(other.thing);
        this.thing = __this__thing;
      }
    }

    public testMap_args deepCopy() {
      return new testMap_args(this);
    }

    @Override
    public void clear() {
      this.thing = null;
    }

    public int getThingSize() {
      return (this.thing == null) ? 0 : this.thing.size();
    }

    public void putToThing(int key, int val) {
      if (this.thing == null) {
        this.thing = new java.util.HashMap<java.lang.Integer,java.lang.Integer>();
      }
      this.thing.put(key, val);
    }

    @org.apache.thrift.annotation.Nullable
    public java.util.Map<java.lang.Integer,java.lang.Integer> getThing() {
      return this.thing;
    }

    public testMap_args setThing(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.Integer,java.lang.Integer> thing) {
      this.thing = thing;
      return this;
    }

    public void unsetThing() {
      this.thing = null;
    }

    /** Returns true if field thing is set (has been assigned a value) and false otherwise */
    public boolean isSetThing() {
      return this.thing != null;
    }

    public void setThingIsSet(boolean value) {
      if (!value) {
        this.thing = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case THING:
        if (value == null) {
          unsetThing();
        } else {
          setThing((java.util.Map<java.lang.Integer,java.lang.Integer>)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case THING:
        return getThing();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case THING:
        return isSetThing();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testMap_args)
        return this.equals((testMap_args)that);
      return false;
    }

    public boolean equals(testMap_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_thing = true && this.isSetThing();
      boolean that_present_thing = true && that.isSetThing();
      if (this_present_thing || that_present_thing) {
        if (!(this_present_thing && that_present_thing))
          return false;
        if (!this.thing.equals(that.thing))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetThing()) ? 131071 : 524287);
      if (isSetThing())
        hashCode = hashCode * 8191 + thing.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testMap_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetThing(), other.isSetThing());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetThing()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.thing, other.thing);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testMap_args(");
      boolean first = true;

      sb.append("thing:");
      if (this.thing == null) {
        sb.append("null");
      } else {
        sb.append(this.thing);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testMap_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testMap_argsStandardScheme getScheme() {
        return new testMap_argsStandardScheme();
      }
    }

    private static class testMap_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testMap_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testMap_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: // THING
              if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                {
                  org.apache.thrift.protocol.TMap _map324 = iprot.readMapBegin();
                  struct.thing = new java.util.HashMap<java.lang.Integer,java.lang.Integer>(2*_map324.size);
                  int _key325;
                  int _val326;
                  for (int _i327 = 0; _i327 < _map324.size; ++_i327)
                  {
                    _key325 = iprot.readI32();
                    _val326 = iprot.readI32();
                    struct.thing.put(_key325, _val326);
                  }
                  iprot.readMapEnd();
                }
                struct.setThingIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testMap_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.thing != null) {
          oprot.writeFieldBegin(THING_FIELD_DESC);
          {
            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.I32, org.apache.thrift.protocol.TType.I32, struct.thing.size()));
            for (java.util.Map.Entry<java.lang.Integer, java.lang.Integer> _iter328 : struct.thing.entrySet())
            {
              oprot.writeI32(_iter328.getKey());
              oprot.writeI32(_iter328.getValue());
            }
            oprot.writeMapEnd();
          }
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testMap_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testMap_argsTupleScheme getScheme() {
        return new testMap_argsTupleScheme();
      }
    }

    private static class testMap_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testMap_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testMap_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetThing()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetThing()) {
          {
            oprot.writeI32(struct.thing.size());
            for (java.util.Map.Entry<java.lang.Integer, java.lang.Integer> _iter329 : struct.thing.entrySet())
            {
              oprot.writeI32(_iter329.getKey());
              oprot.writeI32(_iter329.getValue());
            }
          }
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testMap_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          {
            org.apache.thrift.protocol.TMap _map330 = iprot.readMapBegin(org.apache.thrift.protocol.TType.I32, org.apache.thrift.protocol.TType.I32); 
            struct.thing = new java.util.HashMap<java.lang.Integer,java.lang.Integer>(2*_map330.size);
            int _key331;
            int _val332;
            for (int _i333 = 0; _i333 < _map330.size; ++_i333)
            {
              _key331 = iprot.readI32();
              _val332 = iprot.readI32();
              struct.thing.put(_key331, _val332);
            }
          }
          struct.setThingIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testMap_result implements org.apache.thrift.TBase<testMap_result, testMap_result._Fields>, java.io.Serializable, Cloneable, Comparable<testMap_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testMap_result");

    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.MAP, (short)0);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testMap_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testMap_resultTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.Integer,java.lang.Integer> success; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      SUCCESS((short)0, "success");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 0: // SUCCESS
            return SUCCESS;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
              new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32), 
              new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32))));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testMap_result.class, metaDataMap);
    }

    public testMap_result() {
    }

    public testMap_result(
      java.util.Map<java.lang.Integer,java.lang.Integer> success)
    {
      this();
      this.success = success;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testMap_result(testMap_result other) {
      if (other.isSetSuccess()) {
        java.util.Map<java.lang.Integer,java.lang.Integer> __this__success = new java.util.HashMap<java.lang.Integer,java.lang.Integer>(other.success);
        this.success = __this__success;
      }
    }

    public testMap_result deepCopy() {
      return new testMap_result(this);
    }

    @Override
    public void clear() {
      this.success = null;
    }

    public int getSuccessSize() {
      return (this.success == null) ? 0 : this.success.size();
    }

    public void putToSuccess(int key, int val) {
      if (this.success == null) {
        this.success = new java.util.HashMap<java.lang.Integer,java.lang.Integer>();
      }
      this.success.put(key, val);
    }

    @org.apache.thrift.annotation.Nullable
    public java.util.Map<java.lang.Integer,java.lang.Integer> getSuccess() {
      return this.success;
    }

    public testMap_result setSuccess(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.Integer,java.lang.Integer> success) {
      this.success = success;
      return this;
    }

    public void unsetSuccess() {
      this.success = null;
    }

    /** Returns true if field success is set (has been assigned a value) and false otherwise */
    public boolean isSetSuccess() {
      return this.success != null;
    }

    public void setSuccessIsSet(boolean value) {
      if (!value) {
        this.success = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case SUCCESS:
        if (value == null) {
          unsetSuccess();
        } else {
          setSuccess((java.util.Map<java.lang.Integer,java.lang.Integer>)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case SUCCESS:
        return getSuccess();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case SUCCESS:
        return isSetSuccess();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testMap_result)
        return this.equals((testMap_result)that);
      return false;
    }

    public boolean equals(testMap_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_success = true && this.isSetSuccess();
      boolean that_present_success = true && that.isSetSuccess();
      if (this_present_success || that_present_success) {
        if (!(this_present_success && that_present_success))
          return false;
        if (!this.success.equals(that.success))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
      if (isSetSuccess())
        hashCode = hashCode * 8191 + success.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testMap_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetSuccess(), other.isSetSuccess());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetSuccess()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testMap_result(");
      boolean first = true;

      sb.append("success:");
      if (this.success == null) {
        sb.append("null");
      } else {
        sb.append(this.success);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testMap_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testMap_resultStandardScheme getScheme() {
        return new testMap_resultStandardScheme();
      }
    }

    private static class testMap_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testMap_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testMap_result 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 0: // SUCCESS
              if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                {
                  org.apache.thrift.protocol.TMap _map334 = iprot.readMapBegin();
                  struct.success = new java.util.HashMap<java.lang.Integer,java.lang.Integer>(2*_map334.size);
                  int _key335;
                  int _val336;
                  for (int _i337 = 0; _i337 < _map334.size; ++_i337)
                  {
                    _key335 = iprot.readI32();
                    _val336 = iprot.readI32();
                    struct.success.put(_key335, _val336);
                  }
                  iprot.readMapEnd();
                }
                struct.setSuccessIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testMap_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.success != null) {
          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
          {
            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.I32, org.apache.thrift.protocol.TType.I32, struct.success.size()));
            for (java.util.Map.Entry<java.lang.Integer, java.lang.Integer> _iter338 : struct.success.entrySet())
            {
              oprot.writeI32(_iter338.getKey());
              oprot.writeI32(_iter338.getValue());
            }
            oprot.writeMapEnd();
          }
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testMap_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testMap_resultTupleScheme getScheme() {
        return new testMap_resultTupleScheme();
      }
    }

    private static class testMap_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testMap_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testMap_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetSuccess()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetSuccess()) {
          {
            oprot.writeI32(struct.success.size());
            for (java.util.Map.Entry<java.lang.Integer, java.lang.Integer> _iter339 : struct.success.entrySet())
            {
              oprot.writeI32(_iter339.getKey());
              oprot.writeI32(_iter339.getValue());
            }
          }
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testMap_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          {
            org.apache.thrift.protocol.TMap _map340 = iprot.readMapBegin(org.apache.thrift.protocol.TType.I32, org.apache.thrift.protocol.TType.I32); 
            struct.success = new java.util.HashMap<java.lang.Integer,java.lang.Integer>(2*_map340.size);
            int _key341;
            int _val342;
            for (int _i343 = 0; _i343 < _map340.size; ++_i343)
            {
              _key341 = iprot.readI32();
              _val342 = iprot.readI32();
              struct.success.put(_key341, _val342);
            }
          }
          struct.setSuccessIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testStringMap_args implements org.apache.thrift.TBase<testStringMap_args, testStringMap_args._Fields>, java.io.Serializable, Cloneable, Comparable<testStringMap_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testStringMap_args");

    private static final org.apache.thrift.protocol.TField THING_FIELD_DESC = new org.apache.thrift.protocol.TField("thing", org.apache.thrift.protocol.TType.MAP, (short)1);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testStringMap_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testStringMap_argsTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.lang.String> thing; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      THING((short)1, "thing");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // THING
            return THING;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.THING, new org.apache.thrift.meta_data.FieldMetaData("thing", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
              new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
              new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testStringMap_args.class, metaDataMap);
    }

    public testStringMap_args() {
    }

    public testStringMap_args(
      java.util.Map<java.lang.String,java.lang.String> thing)
    {
      this();
      this.thing = thing;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testStringMap_args(testStringMap_args other) {
      if (other.isSetThing()) {
        java.util.Map<java.lang.String,java.lang.String> __this__thing = new java.util.HashMap<java.lang.String,java.lang.String>(other.thing);
        this.thing = __this__thing;
      }
    }

    public testStringMap_args deepCopy() {
      return new testStringMap_args(this);
    }

    @Override
    public void clear() {
      this.thing = null;
    }

    public int getThingSize() {
      return (this.thing == null) ? 0 : this.thing.size();
    }

    public void putToThing(java.lang.String key, java.lang.String val) {
      if (this.thing == null) {
        this.thing = new java.util.HashMap<java.lang.String,java.lang.String>();
      }
      this.thing.put(key, val);
    }

    @org.apache.thrift.annotation.Nullable
    public java.util.Map<java.lang.String,java.lang.String> getThing() {
      return this.thing;
    }

    public testStringMap_args setThing(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.lang.String> thing) {
      this.thing = thing;
      return this;
    }

    public void unsetThing() {
      this.thing = null;
    }

    /** Returns true if field thing is set (has been assigned a value) and false otherwise */
    public boolean isSetThing() {
      return this.thing != null;
    }

    public void setThingIsSet(boolean value) {
      if (!value) {
        this.thing = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case THING:
        if (value == null) {
          unsetThing();
        } else {
          setThing((java.util.Map<java.lang.String,java.lang.String>)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case THING:
        return getThing();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case THING:
        return isSetThing();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testStringMap_args)
        return this.equals((testStringMap_args)that);
      return false;
    }

    public boolean equals(testStringMap_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_thing = true && this.isSetThing();
      boolean that_present_thing = true && that.isSetThing();
      if (this_present_thing || that_present_thing) {
        if (!(this_present_thing && that_present_thing))
          return false;
        if (!this.thing.equals(that.thing))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetThing()) ? 131071 : 524287);
      if (isSetThing())
        hashCode = hashCode * 8191 + thing.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testStringMap_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetThing(), other.isSetThing());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetThing()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.thing, other.thing);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testStringMap_args(");
      boolean first = true;

      sb.append("thing:");
      if (this.thing == null) {
        sb.append("null");
      } else {
        sb.append(this.thing);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testStringMap_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testStringMap_argsStandardScheme getScheme() {
        return new testStringMap_argsStandardScheme();
      }
    }

    private static class testStringMap_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testStringMap_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testStringMap_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: // THING
              if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                {
                  org.apache.thrift.protocol.TMap _map344 = iprot.readMapBegin();
                  struct.thing = new java.util.HashMap<java.lang.String,java.lang.String>(2*_map344.size);
                  @org.apache.thrift.annotation.Nullable java.lang.String _key345;
                  @org.apache.thrift.annotation.Nullable java.lang.String _val346;
                  for (int _i347 = 0; _i347 < _map344.size; ++_i347)
                  {
                    _key345 = iprot.readString();
                    _val346 = iprot.readString();
                    struct.thing.put(_key345, _val346);
                  }
                  iprot.readMapEnd();
                }
                struct.setThingIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testStringMap_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.thing != null) {
          oprot.writeFieldBegin(THING_FIELD_DESC);
          {
            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.thing.size()));
            for (java.util.Map.Entry<java.lang.String, java.lang.String> _iter348 : struct.thing.entrySet())
            {
              oprot.writeString(_iter348.getKey());
              oprot.writeString(_iter348.getValue());
            }
            oprot.writeMapEnd();
          }
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testStringMap_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testStringMap_argsTupleScheme getScheme() {
        return new testStringMap_argsTupleScheme();
      }
    }

    private static class testStringMap_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testStringMap_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testStringMap_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetThing()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetThing()) {
          {
            oprot.writeI32(struct.thing.size());
            for (java.util.Map.Entry<java.lang.String, java.lang.String> _iter349 : struct.thing.entrySet())
            {
              oprot.writeString(_iter349.getKey());
              oprot.writeString(_iter349.getValue());
            }
          }
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testStringMap_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          {
            org.apache.thrift.protocol.TMap _map350 = iprot.readMapBegin(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING); 
            struct.thing = new java.util.HashMap<java.lang.String,java.lang.String>(2*_map350.size);
            @org.apache.thrift.annotation.Nullable java.lang.String _key351;
            @org.apache.thrift.annotation.Nullable java.lang.String _val352;
            for (int _i353 = 0; _i353 < _map350.size; ++_i353)
            {
              _key351 = iprot.readString();
              _val352 = iprot.readString();
              struct.thing.put(_key351, _val352);
            }
          }
          struct.setThingIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testStringMap_result implements org.apache.thrift.TBase<testStringMap_result, testStringMap_result._Fields>, java.io.Serializable, Cloneable, Comparable<testStringMap_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testStringMap_result");

    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.MAP, (short)0);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testStringMap_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testStringMap_resultTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.lang.String> success; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      SUCCESS((short)0, "success");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 0: // SUCCESS
            return SUCCESS;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
              new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
              new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testStringMap_result.class, metaDataMap);
    }

    public testStringMap_result() {
    }

    public testStringMap_result(
      java.util.Map<java.lang.String,java.lang.String> success)
    {
      this();
      this.success = success;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testStringMap_result(testStringMap_result other) {
      if (other.isSetSuccess()) {
        java.util.Map<java.lang.String,java.lang.String> __this__success = new java.util.HashMap<java.lang.String,java.lang.String>(other.success);
        this.success = __this__success;
      }
    }

    public testStringMap_result deepCopy() {
      return new testStringMap_result(this);
    }

    @Override
    public void clear() {
      this.success = null;
    }

    public int getSuccessSize() {
      return (this.success == null) ? 0 : this.success.size();
    }

    public void putToSuccess(java.lang.String key, java.lang.String val) {
      if (this.success == null) {
        this.success = new java.util.HashMap<java.lang.String,java.lang.String>();
      }
      this.success.put(key, val);
    }

    @org.apache.thrift.annotation.Nullable
    public java.util.Map<java.lang.String,java.lang.String> getSuccess() {
      return this.success;
    }

    public testStringMap_result setSuccess(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.lang.String> success) {
      this.success = success;
      return this;
    }

    public void unsetSuccess() {
      this.success = null;
    }

    /** Returns true if field success is set (has been assigned a value) and false otherwise */
    public boolean isSetSuccess() {
      return this.success != null;
    }

    public void setSuccessIsSet(boolean value) {
      if (!value) {
        this.success = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case SUCCESS:
        if (value == null) {
          unsetSuccess();
        } else {
          setSuccess((java.util.Map<java.lang.String,java.lang.String>)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case SUCCESS:
        return getSuccess();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case SUCCESS:
        return isSetSuccess();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testStringMap_result)
        return this.equals((testStringMap_result)that);
      return false;
    }

    public boolean equals(testStringMap_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_success = true && this.isSetSuccess();
      boolean that_present_success = true && that.isSetSuccess();
      if (this_present_success || that_present_success) {
        if (!(this_present_success && that_present_success))
          return false;
        if (!this.success.equals(that.success))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
      if (isSetSuccess())
        hashCode = hashCode * 8191 + success.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testStringMap_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetSuccess(), other.isSetSuccess());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetSuccess()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testStringMap_result(");
      boolean first = true;

      sb.append("success:");
      if (this.success == null) {
        sb.append("null");
      } else {
        sb.append(this.success);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testStringMap_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testStringMap_resultStandardScheme getScheme() {
        return new testStringMap_resultStandardScheme();
      }
    }

    private static class testStringMap_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testStringMap_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testStringMap_result 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 0: // SUCCESS
              if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                {
                  org.apache.thrift.protocol.TMap _map354 = iprot.readMapBegin();
                  struct.success = new java.util.HashMap<java.lang.String,java.lang.String>(2*_map354.size);
                  @org.apache.thrift.annotation.Nullable java.lang.String _key355;
                  @org.apache.thrift.annotation.Nullable java.lang.String _val356;
                  for (int _i357 = 0; _i357 < _map354.size; ++_i357)
                  {
                    _key355 = iprot.readString();
                    _val356 = iprot.readString();
                    struct.success.put(_key355, _val356);
                  }
                  iprot.readMapEnd();
                }
                struct.setSuccessIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testStringMap_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.success != null) {
          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
          {
            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.success.size()));
            for (java.util.Map.Entry<java.lang.String, java.lang.String> _iter358 : struct.success.entrySet())
            {
              oprot.writeString(_iter358.getKey());
              oprot.writeString(_iter358.getValue());
            }
            oprot.writeMapEnd();
          }
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testStringMap_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testStringMap_resultTupleScheme getScheme() {
        return new testStringMap_resultTupleScheme();
      }
    }

    private static class testStringMap_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testStringMap_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testStringMap_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetSuccess()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetSuccess()) {
          {
            oprot.writeI32(struct.success.size());
            for (java.util.Map.Entry<java.lang.String, java.lang.String> _iter359 : struct.success.entrySet())
            {
              oprot.writeString(_iter359.getKey());
              oprot.writeString(_iter359.getValue());
            }
          }
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testStringMap_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          {
            org.apache.thrift.protocol.TMap _map360 = iprot.readMapBegin(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING); 
            struct.success = new java.util.HashMap<java.lang.String,java.lang.String>(2*_map360.size);
            @org.apache.thrift.annotation.Nullable java.lang.String _key361;
            @org.apache.thrift.annotation.Nullable java.lang.String _val362;
            for (int _i363 = 0; _i363 < _map360.size; ++_i363)
            {
              _key361 = iprot.readString();
              _val362 = iprot.readString();
              struct.success.put(_key361, _val362);
            }
          }
          struct.setSuccessIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testSet_args implements org.apache.thrift.TBase<testSet_args, testSet_args._Fields>, java.io.Serializable, Cloneable, Comparable<testSet_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testSet_args");

    private static final org.apache.thrift.protocol.TField THING_FIELD_DESC = new org.apache.thrift.protocol.TField("thing", org.apache.thrift.protocol.TType.SET, (short)1);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testSet_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testSet_argsTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable java.util.Set<java.lang.Integer> thing; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      THING((short)1, "thing");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // THING
            return THING;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.THING, new org.apache.thrift.meta_data.FieldMetaData("thing", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.SetMetaData(org.apache.thrift.protocol.TType.SET, 
              new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32))));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testSet_args.class, metaDataMap);
    }

    public testSet_args() {
    }

    public testSet_args(
      java.util.Set<java.lang.Integer> thing)
    {
      this();
      this.thing = thing;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testSet_args(testSet_args other) {
      if (other.isSetThing()) {
        java.util.Set<java.lang.Integer> __this__thing = new java.util.HashSet<java.lang.Integer>(other.thing);
        this.thing = __this__thing;
      }
    }

    public testSet_args deepCopy() {
      return new testSet_args(this);
    }

    @Override
    public void clear() {
      this.thing = null;
    }

    public int getThingSize() {
      return (this.thing == null) ? 0 : this.thing.size();
    }

    @org.apache.thrift.annotation.Nullable
    public java.util.Iterator<java.lang.Integer> getThingIterator() {
      return (this.thing == null) ? null : this.thing.iterator();
    }

    public void addToThing(int elem) {
      if (this.thing == null) {
        this.thing = new java.util.HashSet<java.lang.Integer>();
      }
      this.thing.add(elem);
    }

    @org.apache.thrift.annotation.Nullable
    public java.util.Set<java.lang.Integer> getThing() {
      return this.thing;
    }

    public testSet_args setThing(@org.apache.thrift.annotation.Nullable java.util.Set<java.lang.Integer> thing) {
      this.thing = thing;
      return this;
    }

    public void unsetThing() {
      this.thing = null;
    }

    /** Returns true if field thing is set (has been assigned a value) and false otherwise */
    public boolean isSetThing() {
      return this.thing != null;
    }

    public void setThingIsSet(boolean value) {
      if (!value) {
        this.thing = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case THING:
        if (value == null) {
          unsetThing();
        } else {
          setThing((java.util.Set<java.lang.Integer>)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case THING:
        return getThing();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case THING:
        return isSetThing();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testSet_args)
        return this.equals((testSet_args)that);
      return false;
    }

    public boolean equals(testSet_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_thing = true && this.isSetThing();
      boolean that_present_thing = true && that.isSetThing();
      if (this_present_thing || that_present_thing) {
        if (!(this_present_thing && that_present_thing))
          return false;
        if (!this.thing.equals(that.thing))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetThing()) ? 131071 : 524287);
      if (isSetThing())
        hashCode = hashCode * 8191 + thing.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testSet_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetThing(), other.isSetThing());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetThing()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.thing, other.thing);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testSet_args(");
      boolean first = true;

      sb.append("thing:");
      if (this.thing == null) {
        sb.append("null");
      } else {
        sb.append(this.thing);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testSet_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testSet_argsStandardScheme getScheme() {
        return new testSet_argsStandardScheme();
      }
    }

    private static class testSet_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testSet_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testSet_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: // THING
              if (schemeField.type == org.apache.thrift.protocol.TType.SET) {
                {
                  org.apache.thrift.protocol.TSet _set364 = iprot.readSetBegin();
                  struct.thing = new java.util.HashSet<java.lang.Integer>(2*_set364.size);
                  int _elem365;
                  for (int _i366 = 0; _i366 < _set364.size; ++_i366)
                  {
                    _elem365 = iprot.readI32();
                    struct.thing.add(_elem365);
                  }
                  iprot.readSetEnd();
                }
                struct.setThingIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testSet_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.thing != null) {
          oprot.writeFieldBegin(THING_FIELD_DESC);
          {
            oprot.writeSetBegin(new org.apache.thrift.protocol.TSet(org.apache.thrift.protocol.TType.I32, struct.thing.size()));
            for (int _iter367 : struct.thing)
            {
              oprot.writeI32(_iter367);
            }
            oprot.writeSetEnd();
          }
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testSet_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testSet_argsTupleScheme getScheme() {
        return new testSet_argsTupleScheme();
      }
    }

    private static class testSet_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testSet_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testSet_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetThing()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetThing()) {
          {
            oprot.writeI32(struct.thing.size());
            for (int _iter368 : struct.thing)
            {
              oprot.writeI32(_iter368);
            }
          }
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testSet_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          {
            org.apache.thrift.protocol.TSet _set369 = iprot.readSetBegin(org.apache.thrift.protocol.TType.I32);
            struct.thing = new java.util.HashSet<java.lang.Integer>(2*_set369.size);
            int _elem370;
            for (int _i371 = 0; _i371 < _set369.size; ++_i371)
            {
              _elem370 = iprot.readI32();
              struct.thing.add(_elem370);
            }
          }
          struct.setThingIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testSet_result implements org.apache.thrift.TBase<testSet_result, testSet_result._Fields>, java.io.Serializable, Cloneable, Comparable<testSet_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testSet_result");

    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.SET, (short)0);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testSet_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testSet_resultTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable java.util.Set<java.lang.Integer> success; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      SUCCESS((short)0, "success");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 0: // SUCCESS
            return SUCCESS;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.SetMetaData(org.apache.thrift.protocol.TType.SET, 
              new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32))));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testSet_result.class, metaDataMap);
    }

    public testSet_result() {
    }

    public testSet_result(
      java.util.Set<java.lang.Integer> success)
    {
      this();
      this.success = success;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testSet_result(testSet_result other) {
      if (other.isSetSuccess()) {
        java.util.Set<java.lang.Integer> __this__success = new java.util.HashSet<java.lang.Integer>(other.success);
        this.success = __this__success;
      }
    }

    public testSet_result deepCopy() {
      return new testSet_result(this);
    }

    @Override
    public void clear() {
      this.success = null;
    }

    public int getSuccessSize() {
      return (this.success == null) ? 0 : this.success.size();
    }

    @org.apache.thrift.annotation.Nullable
    public java.util.Iterator<java.lang.Integer> getSuccessIterator() {
      return (this.success == null) ? null : this.success.iterator();
    }

    public void addToSuccess(int elem) {
      if (this.success == null) {
        this.success = new java.util.HashSet<java.lang.Integer>();
      }
      this.success.add(elem);
    }

    @org.apache.thrift.annotation.Nullable
    public java.util.Set<java.lang.Integer> getSuccess() {
      return this.success;
    }

    public testSet_result setSuccess(@org.apache.thrift.annotation.Nullable java.util.Set<java.lang.Integer> success) {
      this.success = success;
      return this;
    }

    public void unsetSuccess() {
      this.success = null;
    }

    /** Returns true if field success is set (has been assigned a value) and false otherwise */
    public boolean isSetSuccess() {
      return this.success != null;
    }

    public void setSuccessIsSet(boolean value) {
      if (!value) {
        this.success = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case SUCCESS:
        if (value == null) {
          unsetSuccess();
        } else {
          setSuccess((java.util.Set<java.lang.Integer>)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case SUCCESS:
        return getSuccess();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case SUCCESS:
        return isSetSuccess();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testSet_result)
        return this.equals((testSet_result)that);
      return false;
    }

    public boolean equals(testSet_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_success = true && this.isSetSuccess();
      boolean that_present_success = true && that.isSetSuccess();
      if (this_present_success || that_present_success) {
        if (!(this_present_success && that_present_success))
          return false;
        if (!this.success.equals(that.success))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
      if (isSetSuccess())
        hashCode = hashCode * 8191 + success.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testSet_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetSuccess(), other.isSetSuccess());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetSuccess()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testSet_result(");
      boolean first = true;

      sb.append("success:");
      if (this.success == null) {
        sb.append("null");
      } else {
        sb.append(this.success);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testSet_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testSet_resultStandardScheme getScheme() {
        return new testSet_resultStandardScheme();
      }
    }

    private static class testSet_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testSet_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testSet_result 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 0: // SUCCESS
              if (schemeField.type == org.apache.thrift.protocol.TType.SET) {
                {
                  org.apache.thrift.protocol.TSet _set372 = iprot.readSetBegin();
                  struct.success = new java.util.HashSet<java.lang.Integer>(2*_set372.size);
                  int _elem373;
                  for (int _i374 = 0; _i374 < _set372.size; ++_i374)
                  {
                    _elem373 = iprot.readI32();
                    struct.success.add(_elem373);
                  }
                  iprot.readSetEnd();
                }
                struct.setSuccessIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testSet_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.success != null) {
          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
          {
            oprot.writeSetBegin(new org.apache.thrift.protocol.TSet(org.apache.thrift.protocol.TType.I32, struct.success.size()));
            for (int _iter375 : struct.success)
            {
              oprot.writeI32(_iter375);
            }
            oprot.writeSetEnd();
          }
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testSet_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testSet_resultTupleScheme getScheme() {
        return new testSet_resultTupleScheme();
      }
    }

    private static class testSet_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testSet_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testSet_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetSuccess()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetSuccess()) {
          {
            oprot.writeI32(struct.success.size());
            for (int _iter376 : struct.success)
            {
              oprot.writeI32(_iter376);
            }
          }
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testSet_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          {
            org.apache.thrift.protocol.TSet _set377 = iprot.readSetBegin(org.apache.thrift.protocol.TType.I32);
            struct.success = new java.util.HashSet<java.lang.Integer>(2*_set377.size);
            int _elem378;
            for (int _i379 = 0; _i379 < _set377.size; ++_i379)
            {
              _elem378 = iprot.readI32();
              struct.success.add(_elem378);
            }
          }
          struct.setSuccessIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testList_args implements org.apache.thrift.TBase<testList_args, testList_args._Fields>, java.io.Serializable, Cloneable, Comparable<testList_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testList_args");

    private static final org.apache.thrift.protocol.TField THING_FIELD_DESC = new org.apache.thrift.protocol.TField("thing", org.apache.thrift.protocol.TType.LIST, (short)1);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testList_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testList_argsTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable java.util.List<java.lang.Integer> thing; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      THING((short)1, "thing");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // THING
            return THING;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.THING, new org.apache.thrift.meta_data.FieldMetaData("thing", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
              new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32))));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testList_args.class, metaDataMap);
    }

    public testList_args() {
    }

    public testList_args(
      java.util.List<java.lang.Integer> thing)
    {
      this();
      this.thing = thing;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testList_args(testList_args other) {
      if (other.isSetThing()) {
        java.util.List<java.lang.Integer> __this__thing = new java.util.ArrayList<java.lang.Integer>(other.thing);
        this.thing = __this__thing;
      }
    }

    public testList_args deepCopy() {
      return new testList_args(this);
    }

    @Override
    public void clear() {
      this.thing = null;
    }

    public int getThingSize() {
      return (this.thing == null) ? 0 : this.thing.size();
    }

    @org.apache.thrift.annotation.Nullable
    public java.util.Iterator<java.lang.Integer> getThingIterator() {
      return (this.thing == null) ? null : this.thing.iterator();
    }

    public void addToThing(int elem) {
      if (this.thing == null) {
        this.thing = new java.util.ArrayList<java.lang.Integer>();
      }
      this.thing.add(elem);
    }

    @org.apache.thrift.annotation.Nullable
    public java.util.List<java.lang.Integer> getThing() {
      return this.thing;
    }

    public testList_args setThing(@org.apache.thrift.annotation.Nullable java.util.List<java.lang.Integer> thing) {
      this.thing = thing;
      return this;
    }

    public void unsetThing() {
      this.thing = null;
    }

    /** Returns true if field thing is set (has been assigned a value) and false otherwise */
    public boolean isSetThing() {
      return this.thing != null;
    }

    public void setThingIsSet(boolean value) {
      if (!value) {
        this.thing = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case THING:
        if (value == null) {
          unsetThing();
        } else {
          setThing((java.util.List<java.lang.Integer>)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case THING:
        return getThing();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case THING:
        return isSetThing();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testList_args)
        return this.equals((testList_args)that);
      return false;
    }

    public boolean equals(testList_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_thing = true && this.isSetThing();
      boolean that_present_thing = true && that.isSetThing();
      if (this_present_thing || that_present_thing) {
        if (!(this_present_thing && that_present_thing))
          return false;
        if (!this.thing.equals(that.thing))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetThing()) ? 131071 : 524287);
      if (isSetThing())
        hashCode = hashCode * 8191 + thing.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testList_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetThing(), other.isSetThing());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetThing()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.thing, other.thing);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testList_args(");
      boolean first = true;

      sb.append("thing:");
      if (this.thing == null) {
        sb.append("null");
      } else {
        sb.append(this.thing);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testList_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testList_argsStandardScheme getScheme() {
        return new testList_argsStandardScheme();
      }
    }

    private static class testList_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testList_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testList_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: // THING
              if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                {
                  org.apache.thrift.protocol.TList _list380 = iprot.readListBegin();
                  struct.thing = new java.util.ArrayList<java.lang.Integer>(_list380.size);
                  int _elem381;
                  for (int _i382 = 0; _i382 < _list380.size; ++_i382)
                  {
                    _elem381 = iprot.readI32();
                    struct.thing.add(_elem381);
                  }
                  iprot.readListEnd();
                }
                struct.setThingIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testList_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.thing != null) {
          oprot.writeFieldBegin(THING_FIELD_DESC);
          {
            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.I32, struct.thing.size()));
            for (int _iter383 : struct.thing)
            {
              oprot.writeI32(_iter383);
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testList_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testList_argsTupleScheme getScheme() {
        return new testList_argsTupleScheme();
      }
    }

    private static class testList_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testList_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testList_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetThing()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetThing()) {
          {
            oprot.writeI32(struct.thing.size());
            for (int _iter384 : struct.thing)
            {
              oprot.writeI32(_iter384);
            }
          }
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testList_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          {
            org.apache.thrift.protocol.TList _list385 = iprot.readListBegin(org.apache.thrift.protocol.TType.I32);
            struct.thing = new java.util.ArrayList<java.lang.Integer>(_list385.size);
            int _elem386;
            for (int _i387 = 0; _i387 < _list385.size; ++_i387)
            {
              _elem386 = iprot.readI32();
              struct.thing.add(_elem386);
            }
          }
          struct.setThingIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testList_result implements org.apache.thrift.TBase<testList_result, testList_result._Fields>, java.io.Serializable, Cloneable, Comparable<testList_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testList_result");

    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.LIST, (short)0);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testList_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testList_resultTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable java.util.List<java.lang.Integer> success; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      SUCCESS((short)0, "success");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 0: // SUCCESS
            return SUCCESS;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
              new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32))));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testList_result.class, metaDataMap);
    }

    public testList_result() {
    }

    public testList_result(
      java.util.List<java.lang.Integer> success)
    {
      this();
      this.success = success;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testList_result(testList_result other) {
      if (other.isSetSuccess()) {
        java.util.List<java.lang.Integer> __this__success = new java.util.ArrayList<java.lang.Integer>(other.success);
        this.success = __this__success;
      }
    }

    public testList_result deepCopy() {
      return new testList_result(this);
    }

    @Override
    public void clear() {
      this.success = null;
    }

    public int getSuccessSize() {
      return (this.success == null) ? 0 : this.success.size();
    }

    @org.apache.thrift.annotation.Nullable
    public java.util.Iterator<java.lang.Integer> getSuccessIterator() {
      return (this.success == null) ? null : this.success.iterator();
    }

    public void addToSuccess(int elem) {
      if (this.success == null) {
        this.success = new java.util.ArrayList<java.lang.Integer>();
      }
      this.success.add(elem);
    }

    @org.apache.thrift.annotation.Nullable
    public java.util.List<java.lang.Integer> getSuccess() {
      return this.success;
    }

    public testList_result setSuccess(@org.apache.thrift.annotation.Nullable java.util.List<java.lang.Integer> success) {
      this.success = success;
      return this;
    }

    public void unsetSuccess() {
      this.success = null;
    }

    /** Returns true if field success is set (has been assigned a value) and false otherwise */
    public boolean isSetSuccess() {
      return this.success != null;
    }

    public void setSuccessIsSet(boolean value) {
      if (!value) {
        this.success = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case SUCCESS:
        if (value == null) {
          unsetSuccess();
        } else {
          setSuccess((java.util.List<java.lang.Integer>)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case SUCCESS:
        return getSuccess();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case SUCCESS:
        return isSetSuccess();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testList_result)
        return this.equals((testList_result)that);
      return false;
    }

    public boolean equals(testList_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_success = true && this.isSetSuccess();
      boolean that_present_success = true && that.isSetSuccess();
      if (this_present_success || that_present_success) {
        if (!(this_present_success && that_present_success))
          return false;
        if (!this.success.equals(that.success))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
      if (isSetSuccess())
        hashCode = hashCode * 8191 + success.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testList_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetSuccess(), other.isSetSuccess());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetSuccess()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testList_result(");
      boolean first = true;

      sb.append("success:");
      if (this.success == null) {
        sb.append("null");
      } else {
        sb.append(this.success);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testList_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testList_resultStandardScheme getScheme() {
        return new testList_resultStandardScheme();
      }
    }

    private static class testList_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testList_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testList_result 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 0: // SUCCESS
              if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                {
                  org.apache.thrift.protocol.TList _list388 = iprot.readListBegin();
                  struct.success = new java.util.ArrayList<java.lang.Integer>(_list388.size);
                  int _elem389;
                  for (int _i390 = 0; _i390 < _list388.size; ++_i390)
                  {
                    _elem389 = iprot.readI32();
                    struct.success.add(_elem389);
                  }
                  iprot.readListEnd();
                }
                struct.setSuccessIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testList_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.success != null) {
          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
          {
            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.I32, struct.success.size()));
            for (int _iter391 : struct.success)
            {
              oprot.writeI32(_iter391);
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testList_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testList_resultTupleScheme getScheme() {
        return new testList_resultTupleScheme();
      }
    }

    private static class testList_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testList_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testList_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetSuccess()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetSuccess()) {
          {
            oprot.writeI32(struct.success.size());
            for (int _iter392 : struct.success)
            {
              oprot.writeI32(_iter392);
            }
          }
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testList_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          {
            org.apache.thrift.protocol.TList _list393 = iprot.readListBegin(org.apache.thrift.protocol.TType.I32);
            struct.success = new java.util.ArrayList<java.lang.Integer>(_list393.size);
            int _elem394;
            for (int _i395 = 0; _i395 < _list393.size; ++_i395)
            {
              _elem394 = iprot.readI32();
              struct.success.add(_elem394);
            }
          }
          struct.setSuccessIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testEnum_args implements org.apache.thrift.TBase<testEnum_args, testEnum_args._Fields>, java.io.Serializable, Cloneable, Comparable<testEnum_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testEnum_args");

    private static final org.apache.thrift.protocol.TField THING_FIELD_DESC = new org.apache.thrift.protocol.TField("thing", org.apache.thrift.protocol.TType.I32, (short)1);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testEnum_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testEnum_argsTupleSchemeFactory();

    /**
     * 
     * @see Numberz
     */
    public @org.apache.thrift.annotation.Nullable Numberz thing; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      /**
       * 
       * @see Numberz
       */
      THING((short)1, "thing");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // THING
            return THING;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.THING, new org.apache.thrift.meta_data.FieldMetaData("thing", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, Numberz.class)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testEnum_args.class, metaDataMap);
    }

    public testEnum_args() {
    }

    public testEnum_args(
      Numberz thing)
    {
      this();
      this.thing = thing;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testEnum_args(testEnum_args other) {
      if (other.isSetThing()) {
        this.thing = other.thing;
      }
    }

    public testEnum_args deepCopy() {
      return new testEnum_args(this);
    }

    @Override
    public void clear() {
      this.thing = null;
    }

    /**
     * 
     * @see Numberz
     */
    @org.apache.thrift.annotation.Nullable
    public Numberz getThing() {
      return this.thing;
    }

    /**
     * 
     * @see Numberz
     */
    public testEnum_args setThing(@org.apache.thrift.annotation.Nullable Numberz thing) {
      this.thing = thing;
      return this;
    }

    public void unsetThing() {
      this.thing = null;
    }

    /** Returns true if field thing is set (has been assigned a value) and false otherwise */
    public boolean isSetThing() {
      return this.thing != null;
    }

    public void setThingIsSet(boolean value) {
      if (!value) {
        this.thing = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case THING:
        if (value == null) {
          unsetThing();
        } else {
          setThing((Numberz)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case THING:
        return getThing();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case THING:
        return isSetThing();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testEnum_args)
        return this.equals((testEnum_args)that);
      return false;
    }

    public boolean equals(testEnum_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_thing = true && this.isSetThing();
      boolean that_present_thing = true && that.isSetThing();
      if (this_present_thing || that_present_thing) {
        if (!(this_present_thing && that_present_thing))
          return false;
        if (!this.thing.equals(that.thing))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetThing()) ? 131071 : 524287);
      if (isSetThing())
        hashCode = hashCode * 8191 + thing.getValue();

      return hashCode;
    }

    @Override
    public int compareTo(testEnum_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetThing(), other.isSetThing());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetThing()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.thing, other.thing);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testEnum_args(");
      boolean first = true;

      sb.append("thing:");
      if (this.thing == null) {
        sb.append("null");
      } else {
        sb.append(this.thing);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testEnum_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testEnum_argsStandardScheme getScheme() {
        return new testEnum_argsStandardScheme();
      }
    }

    private static class testEnum_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testEnum_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testEnum_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: // THING
              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
                struct.thing = com.thrift.example.real.thrift.test.Numberz.findByValue(iprot.readI32());
                struct.setThingIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testEnum_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.thing != null) {
          oprot.writeFieldBegin(THING_FIELD_DESC);
          oprot.writeI32(struct.thing.getValue());
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testEnum_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testEnum_argsTupleScheme getScheme() {
        return new testEnum_argsTupleScheme();
      }
    }

    private static class testEnum_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testEnum_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testEnum_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetThing()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetThing()) {
          oprot.writeI32(struct.thing.getValue());
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testEnum_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.thing = com.thrift.example.real.thrift.test.Numberz.findByValue(iprot.readI32());
          struct.setThingIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testEnum_result implements org.apache.thrift.TBase<testEnum_result, testEnum_result._Fields>, java.io.Serializable, Cloneable, Comparable<testEnum_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testEnum_result");

    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.I32, (short)0);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testEnum_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testEnum_resultTupleSchemeFactory();

    /**
     * 
     * @see Numberz
     */
    public @org.apache.thrift.annotation.Nullable Numberz success; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      /**
       * 
       * @see Numberz
       */
      SUCCESS((short)0, "success");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 0: // SUCCESS
            return SUCCESS;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, Numberz.class)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testEnum_result.class, metaDataMap);
    }

    public testEnum_result() {
    }

    public testEnum_result(
      Numberz success)
    {
      this();
      this.success = success;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testEnum_result(testEnum_result other) {
      if (other.isSetSuccess()) {
        this.success = other.success;
      }
    }

    public testEnum_result deepCopy() {
      return new testEnum_result(this);
    }

    @Override
    public void clear() {
      this.success = null;
    }

    /**
     * 
     * @see Numberz
     */
    @org.apache.thrift.annotation.Nullable
    public Numberz getSuccess() {
      return this.success;
    }

    /**
     * 
     * @see Numberz
     */
    public testEnum_result setSuccess(@org.apache.thrift.annotation.Nullable Numberz success) {
      this.success = success;
      return this;
    }

    public void unsetSuccess() {
      this.success = null;
    }

    /** Returns true if field success is set (has been assigned a value) and false otherwise */
    public boolean isSetSuccess() {
      return this.success != null;
    }

    public void setSuccessIsSet(boolean value) {
      if (!value) {
        this.success = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case SUCCESS:
        if (value == null) {
          unsetSuccess();
        } else {
          setSuccess((Numberz)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case SUCCESS:
        return getSuccess();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case SUCCESS:
        return isSetSuccess();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testEnum_result)
        return this.equals((testEnum_result)that);
      return false;
    }

    public boolean equals(testEnum_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_success = true && this.isSetSuccess();
      boolean that_present_success = true && that.isSetSuccess();
      if (this_present_success || that_present_success) {
        if (!(this_present_success && that_present_success))
          return false;
        if (!this.success.equals(that.success))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
      if (isSetSuccess())
        hashCode = hashCode * 8191 + success.getValue();

      return hashCode;
    }

    @Override
    public int compareTo(testEnum_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetSuccess(), other.isSetSuccess());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetSuccess()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testEnum_result(");
      boolean first = true;

      sb.append("success:");
      if (this.success == null) {
        sb.append("null");
      } else {
        sb.append(this.success);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testEnum_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testEnum_resultStandardScheme getScheme() {
        return new testEnum_resultStandardScheme();
      }
    }

    private static class testEnum_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testEnum_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testEnum_result 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 0: // SUCCESS
              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
                struct.success = com.thrift.example.real.thrift.test.Numberz.findByValue(iprot.readI32());
                struct.setSuccessIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testEnum_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.success != null) {
          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
          oprot.writeI32(struct.success.getValue());
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testEnum_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testEnum_resultTupleScheme getScheme() {
        return new testEnum_resultTupleScheme();
      }
    }

    private static class testEnum_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testEnum_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testEnum_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetSuccess()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetSuccess()) {
          oprot.writeI32(struct.success.getValue());
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testEnum_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.success = com.thrift.example.real.thrift.test.Numberz.findByValue(iprot.readI32());
          struct.setSuccessIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testTypedef_args implements org.apache.thrift.TBase<testTypedef_args, testTypedef_args._Fields>, java.io.Serializable, Cloneable, Comparable<testTypedef_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testTypedef_args");

    private static final org.apache.thrift.protocol.TField THING_FIELD_DESC = new org.apache.thrift.protocol.TField("thing", org.apache.thrift.protocol.TType.I64, (short)1);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testTypedef_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testTypedef_argsTupleSchemeFactory();

    public long thing; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      THING((short)1, "thing");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // THING
            return THING;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    private static final int __THING_ISSET_ID = 0;
    private byte __isset_bitfield = 0;
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.THING, new org.apache.thrift.meta_data.FieldMetaData("thing", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64          , "UserId")));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testTypedef_args.class, metaDataMap);
    }

    public testTypedef_args() {
    }

    public testTypedef_args(
      long thing)
    {
      this();
      this.thing = thing;
      setThingIsSet(true);
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testTypedef_args(testTypedef_args other) {
      __isset_bitfield = other.__isset_bitfield;
      this.thing = other.thing;
    }

    public testTypedef_args deepCopy() {
      return new testTypedef_args(this);
    }

    @Override
    public void clear() {
      setThingIsSet(false);
      this.thing = 0;
    }

    public long getThing() {
      return this.thing;
    }

    public testTypedef_args setThing(long thing) {
      this.thing = thing;
      setThingIsSet(true);
      return this;
    }

    public void unsetThing() {
      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __THING_ISSET_ID);
    }

    /** Returns true if field thing is set (has been assigned a value) and false otherwise */
    public boolean isSetThing() {
      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __THING_ISSET_ID);
    }

    public void setThingIsSet(boolean value) {
      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __THING_ISSET_ID, value);
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case THING:
        if (value == null) {
          unsetThing();
        } else {
          setThing((java.lang.Long)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case THING:
        return getThing();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case THING:
        return isSetThing();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testTypedef_args)
        return this.equals((testTypedef_args)that);
      return false;
    }

    public boolean equals(testTypedef_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_thing = true;
      boolean that_present_thing = true;
      if (this_present_thing || that_present_thing) {
        if (!(this_present_thing && that_present_thing))
          return false;
        if (this.thing != that.thing)
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(thing);

      return hashCode;
    }

    @Override
    public int compareTo(testTypedef_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetThing(), other.isSetThing());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetThing()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.thing, other.thing);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testTypedef_args(");
      boolean first = true;

      sb.append("thing:");
      sb.append(this.thing);
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
        __isset_bitfield = 0;
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testTypedef_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testTypedef_argsStandardScheme getScheme() {
        return new testTypedef_argsStandardScheme();
      }
    }

    private static class testTypedef_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testTypedef_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testTypedef_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: // THING
              if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
                struct.thing = iprot.readI64();
                struct.setThingIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testTypedef_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        oprot.writeFieldBegin(THING_FIELD_DESC);
        oprot.writeI64(struct.thing);
        oprot.writeFieldEnd();
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testTypedef_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testTypedef_argsTupleScheme getScheme() {
        return new testTypedef_argsTupleScheme();
      }
    }

    private static class testTypedef_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testTypedef_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testTypedef_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetThing()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetThing()) {
          oprot.writeI64(struct.thing);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testTypedef_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.thing = iprot.readI64();
          struct.setThingIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testTypedef_result implements org.apache.thrift.TBase<testTypedef_result, testTypedef_result._Fields>, java.io.Serializable, Cloneable, Comparable<testTypedef_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testTypedef_result");

    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.I64, (short)0);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testTypedef_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testTypedef_resultTupleSchemeFactory();

    public long success; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      SUCCESS((short)0, "success");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 0: // SUCCESS
            return SUCCESS;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    private static final int __SUCCESS_ISSET_ID = 0;
    private byte __isset_bitfield = 0;
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64          , "UserId")));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testTypedef_result.class, metaDataMap);
    }

    public testTypedef_result() {
    }

    public testTypedef_result(
      long success)
    {
      this();
      this.success = success;
      setSuccessIsSet(true);
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testTypedef_result(testTypedef_result other) {
      __isset_bitfield = other.__isset_bitfield;
      this.success = other.success;
    }

    public testTypedef_result deepCopy() {
      return new testTypedef_result(this);
    }

    @Override
    public void clear() {
      setSuccessIsSet(false);
      this.success = 0;
    }

    public long getSuccess() {
      return this.success;
    }

    public testTypedef_result setSuccess(long success) {
      this.success = success;
      setSuccessIsSet(true);
      return this;
    }

    public void unsetSuccess() {
      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __SUCCESS_ISSET_ID);
    }

    /** Returns true if field success is set (has been assigned a value) and false otherwise */
    public boolean isSetSuccess() {
      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
    }

    public void setSuccessIsSet(boolean value) {
      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case SUCCESS:
        if (value == null) {
          unsetSuccess();
        } else {
          setSuccess((java.lang.Long)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case SUCCESS:
        return getSuccess();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case SUCCESS:
        return isSetSuccess();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testTypedef_result)
        return this.equals((testTypedef_result)that);
      return false;
    }

    public boolean equals(testTypedef_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_success = true;
      boolean that_present_success = true;
      if (this_present_success || that_present_success) {
        if (!(this_present_success && that_present_success))
          return false;
        if (this.success != that.success)
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(success);

      return hashCode;
    }

    @Override
    public int compareTo(testTypedef_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetSuccess(), other.isSetSuccess());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetSuccess()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testTypedef_result(");
      boolean first = true;

      sb.append("success:");
      sb.append(this.success);
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
        __isset_bitfield = 0;
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testTypedef_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testTypedef_resultStandardScheme getScheme() {
        return new testTypedef_resultStandardScheme();
      }
    }

    private static class testTypedef_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testTypedef_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testTypedef_result 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 0: // SUCCESS
              if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
                struct.success = iprot.readI64();
                struct.setSuccessIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testTypedef_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.isSetSuccess()) {
          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
          oprot.writeI64(struct.success);
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testTypedef_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testTypedef_resultTupleScheme getScheme() {
        return new testTypedef_resultTupleScheme();
      }
    }

    private static class testTypedef_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testTypedef_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testTypedef_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetSuccess()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetSuccess()) {
          oprot.writeI64(struct.success);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testTypedef_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.success = iprot.readI64();
          struct.setSuccessIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testMapMap_args implements org.apache.thrift.TBase<testMapMap_args, testMapMap_args._Fields>, java.io.Serializable, Cloneable, Comparable<testMapMap_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testMapMap_args");

    private static final org.apache.thrift.protocol.TField HELLO_FIELD_DESC = new org.apache.thrift.protocol.TField("hello", org.apache.thrift.protocol.TType.I32, (short)1);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testMapMap_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testMapMap_argsTupleSchemeFactory();

    public int hello; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      HELLO((short)1, "hello");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // HELLO
            return HELLO;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    private static final int __HELLO_ISSET_ID = 0;
    private byte __isset_bitfield = 0;
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.HELLO, new org.apache.thrift.meta_data.FieldMetaData("hello", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testMapMap_args.class, metaDataMap);
    }

    public testMapMap_args() {
    }

    public testMapMap_args(
      int hello)
    {
      this();
      this.hello = hello;
      setHelloIsSet(true);
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testMapMap_args(testMapMap_args other) {
      __isset_bitfield = other.__isset_bitfield;
      this.hello = other.hello;
    }

    public testMapMap_args deepCopy() {
      return new testMapMap_args(this);
    }

    @Override
    public void clear() {
      setHelloIsSet(false);
      this.hello = 0;
    }

    public int getHello() {
      return this.hello;
    }

    public testMapMap_args setHello(int hello) {
      this.hello = hello;
      setHelloIsSet(true);
      return this;
    }

    public void unsetHello() {
      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __HELLO_ISSET_ID);
    }

    /** Returns true if field hello is set (has been assigned a value) and false otherwise */
    public boolean isSetHello() {
      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __HELLO_ISSET_ID);
    }

    public void setHelloIsSet(boolean value) {
      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __HELLO_ISSET_ID, value);
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case HELLO:
        if (value == null) {
          unsetHello();
        } else {
          setHello((java.lang.Integer)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case HELLO:
        return getHello();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case HELLO:
        return isSetHello();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testMapMap_args)
        return this.equals((testMapMap_args)that);
      return false;
    }

    public boolean equals(testMapMap_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_hello = true;
      boolean that_present_hello = true;
      if (this_present_hello || that_present_hello) {
        if (!(this_present_hello && that_present_hello))
          return false;
        if (this.hello != that.hello)
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + hello;

      return hashCode;
    }

    @Override
    public int compareTo(testMapMap_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetHello(), other.isSetHello());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetHello()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.hello, other.hello);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testMapMap_args(");
      boolean first = true;

      sb.append("hello:");
      sb.append(this.hello);
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
        __isset_bitfield = 0;
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testMapMap_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testMapMap_argsStandardScheme getScheme() {
        return new testMapMap_argsStandardScheme();
      }
    }

    private static class testMapMap_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testMapMap_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testMapMap_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: // HELLO
              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
                struct.hello = iprot.readI32();
                struct.setHelloIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testMapMap_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        oprot.writeFieldBegin(HELLO_FIELD_DESC);
        oprot.writeI32(struct.hello);
        oprot.writeFieldEnd();
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testMapMap_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testMapMap_argsTupleScheme getScheme() {
        return new testMapMap_argsTupleScheme();
      }
    }

    private static class testMapMap_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testMapMap_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testMapMap_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetHello()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetHello()) {
          oprot.writeI32(struct.hello);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testMapMap_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.hello = iprot.readI32();
          struct.setHelloIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testMapMap_result implements org.apache.thrift.TBase<testMapMap_result, testMapMap_result._Fields>, java.io.Serializable, Cloneable, Comparable<testMapMap_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testMapMap_result");

    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.MAP, (short)0);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testMapMap_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testMapMap_resultTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>> success; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      SUCCESS((short)0, "success");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 0: // SUCCESS
            return SUCCESS;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
              new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32), 
              new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
                  new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32), 
                  new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)))));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testMapMap_result.class, metaDataMap);
    }

    public testMapMap_result() {
    }

    public testMapMap_result(
      java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>> success)
    {
      this();
      this.success = success;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testMapMap_result(testMapMap_result other) {
      if (other.isSetSuccess()) {
        java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>> __this__success = new java.util.HashMap<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>>(other.success.size());
        for (java.util.Map.Entry<java.lang.Integer, java.util.Map<java.lang.Integer,java.lang.Integer>> other_element : other.success.entrySet()) {

          java.lang.Integer other_element_key = other_element.getKey();
          java.util.Map<java.lang.Integer,java.lang.Integer> other_element_value = other_element.getValue();

          java.lang.Integer __this__success_copy_key = other_element_key;

          java.util.Map<java.lang.Integer,java.lang.Integer> __this__success_copy_value = new java.util.HashMap<java.lang.Integer,java.lang.Integer>(other_element_value);

          __this__success.put(__this__success_copy_key, __this__success_copy_value);
        }
        this.success = __this__success;
      }
    }

    public testMapMap_result deepCopy() {
      return new testMapMap_result(this);
    }

    @Override
    public void clear() {
      this.success = null;
    }

    public int getSuccessSize() {
      return (this.success == null) ? 0 : this.success.size();
    }

    public void putToSuccess(int key, java.util.Map<java.lang.Integer,java.lang.Integer> val) {
      if (this.success == null) {
        this.success = new java.util.HashMap<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>>();
      }
      this.success.put(key, val);
    }

    @org.apache.thrift.annotation.Nullable
    public java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>> getSuccess() {
      return this.success;
    }

    public testMapMap_result setSuccess(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>> success) {
      this.success = success;
      return this;
    }

    public void unsetSuccess() {
      this.success = null;
    }

    /** Returns true if field success is set (has been assigned a value) and false otherwise */
    public boolean isSetSuccess() {
      return this.success != null;
    }

    public void setSuccessIsSet(boolean value) {
      if (!value) {
        this.success = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case SUCCESS:
        if (value == null) {
          unsetSuccess();
        } else {
          setSuccess((java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>>)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case SUCCESS:
        return getSuccess();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case SUCCESS:
        return isSetSuccess();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testMapMap_result)
        return this.equals((testMapMap_result)that);
      return false;
    }

    public boolean equals(testMapMap_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_success = true && this.isSetSuccess();
      boolean that_present_success = true && that.isSetSuccess();
      if (this_present_success || that_present_success) {
        if (!(this_present_success && that_present_success))
          return false;
        if (!this.success.equals(that.success))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
      if (isSetSuccess())
        hashCode = hashCode * 8191 + success.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testMapMap_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetSuccess(), other.isSetSuccess());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetSuccess()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testMapMap_result(");
      boolean first = true;

      sb.append("success:");
      if (this.success == null) {
        sb.append("null");
      } else {
        sb.append(this.success);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testMapMap_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testMapMap_resultStandardScheme getScheme() {
        return new testMapMap_resultStandardScheme();
      }
    }

    private static class testMapMap_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testMapMap_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testMapMap_result 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 0: // SUCCESS
              if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                {
                  org.apache.thrift.protocol.TMap _map396 = iprot.readMapBegin();
                  struct.success = new java.util.HashMap<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>>(2*_map396.size);
                  int _key397;
                  @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.Integer,java.lang.Integer> _val398;
                  for (int _i399 = 0; _i399 < _map396.size; ++_i399)
                  {
                    _key397 = iprot.readI32();
                    {
                      org.apache.thrift.protocol.TMap _map400 = iprot.readMapBegin();
                      _val398 = new java.util.HashMap<java.lang.Integer,java.lang.Integer>(2*_map400.size);
                      int _key401;
                      int _val402;
                      for (int _i403 = 0; _i403 < _map400.size; ++_i403)
                      {
                        _key401 = iprot.readI32();
                        _val402 = iprot.readI32();
                        _val398.put(_key401, _val402);
                      }
                      iprot.readMapEnd();
                    }
                    struct.success.put(_key397, _val398);
                  }
                  iprot.readMapEnd();
                }
                struct.setSuccessIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testMapMap_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.success != null) {
          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
          {
            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.I32, org.apache.thrift.protocol.TType.MAP, struct.success.size()));
            for (java.util.Map.Entry<java.lang.Integer, java.util.Map<java.lang.Integer,java.lang.Integer>> _iter404 : struct.success.entrySet())
            {
              oprot.writeI32(_iter404.getKey());
              {
                oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.I32, org.apache.thrift.protocol.TType.I32, _iter404.getValue().size()));
                for (java.util.Map.Entry<java.lang.Integer, java.lang.Integer> _iter405 : _iter404.getValue().entrySet())
                {
                  oprot.writeI32(_iter405.getKey());
                  oprot.writeI32(_iter405.getValue());
                }
                oprot.writeMapEnd();
              }
            }
            oprot.writeMapEnd();
          }
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testMapMap_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testMapMap_resultTupleScheme getScheme() {
        return new testMapMap_resultTupleScheme();
      }
    }

    private static class testMapMap_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testMapMap_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testMapMap_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetSuccess()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetSuccess()) {
          {
            oprot.writeI32(struct.success.size());
            for (java.util.Map.Entry<java.lang.Integer, java.util.Map<java.lang.Integer,java.lang.Integer>> _iter406 : struct.success.entrySet())
            {
              oprot.writeI32(_iter406.getKey());
              {
                oprot.writeI32(_iter406.getValue().size());
                for (java.util.Map.Entry<java.lang.Integer, java.lang.Integer> _iter407 : _iter406.getValue().entrySet())
                {
                  oprot.writeI32(_iter407.getKey());
                  oprot.writeI32(_iter407.getValue());
                }
              }
            }
          }
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testMapMap_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          {
            org.apache.thrift.protocol.TMap _map408 = iprot.readMapBegin(org.apache.thrift.protocol.TType.I32, org.apache.thrift.protocol.TType.MAP); 
            struct.success = new java.util.HashMap<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>>(2*_map408.size);
            int _key409;
            @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.Integer,java.lang.Integer> _val410;
            for (int _i411 = 0; _i411 < _map408.size; ++_i411)
            {
              _key409 = iprot.readI32();
              {
                org.apache.thrift.protocol.TMap _map412 = iprot.readMapBegin(org.apache.thrift.protocol.TType.I32, org.apache.thrift.protocol.TType.I32); 
                _val410 = new java.util.HashMap<java.lang.Integer,java.lang.Integer>(2*_map412.size);
                int _key413;
                int _val414;
                for (int _i415 = 0; _i415 < _map412.size; ++_i415)
                {
                  _key413 = iprot.readI32();
                  _val414 = iprot.readI32();
                  _val410.put(_key413, _val414);
                }
              }
              struct.success.put(_key409, _val410);
            }
          }
          struct.setSuccessIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testInsanity_args implements org.apache.thrift.TBase<testInsanity_args, testInsanity_args._Fields>, java.io.Serializable, Cloneable, Comparable<testInsanity_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testInsanity_args");

    private static final org.apache.thrift.protocol.TField ARGUMENT_FIELD_DESC = new org.apache.thrift.protocol.TField("argument", org.apache.thrift.protocol.TType.STRUCT, (short)1);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testInsanity_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testInsanity_argsTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable Insanity argument; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      ARGUMENT((short)1, "argument");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // ARGUMENT
            return ARGUMENT;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.ARGUMENT, new org.apache.thrift.meta_data.FieldMetaData("argument", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Insanity.class)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testInsanity_args.class, metaDataMap);
    }

    public testInsanity_args() {
    }

    public testInsanity_args(
      Insanity argument)
    {
      this();
      this.argument = argument;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testInsanity_args(testInsanity_args other) {
      if (other.isSetArgument()) {
        this.argument = new Insanity(other.argument);
      }
    }

    public testInsanity_args deepCopy() {
      return new testInsanity_args(this);
    }

    @Override
    public void clear() {
      this.argument = null;
    }

    @org.apache.thrift.annotation.Nullable
    public Insanity getArgument() {
      return this.argument;
    }

    public testInsanity_args setArgument(@org.apache.thrift.annotation.Nullable Insanity argument) {
      this.argument = argument;
      return this;
    }

    public void unsetArgument() {
      this.argument = null;
    }

    /** Returns true if field argument is set (has been assigned a value) and false otherwise */
    public boolean isSetArgument() {
      return this.argument != null;
    }

    public void setArgumentIsSet(boolean value) {
      if (!value) {
        this.argument = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case ARGUMENT:
        if (value == null) {
          unsetArgument();
        } else {
          setArgument((Insanity)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case ARGUMENT:
        return getArgument();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case ARGUMENT:
        return isSetArgument();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testInsanity_args)
        return this.equals((testInsanity_args)that);
      return false;
    }

    public boolean equals(testInsanity_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_argument = true && this.isSetArgument();
      boolean that_present_argument = true && that.isSetArgument();
      if (this_present_argument || that_present_argument) {
        if (!(this_present_argument && that_present_argument))
          return false;
        if (!this.argument.equals(that.argument))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetArgument()) ? 131071 : 524287);
      if (isSetArgument())
        hashCode = hashCode * 8191 + argument.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testInsanity_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetArgument(), other.isSetArgument());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetArgument()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.argument, other.argument);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testInsanity_args(");
      boolean first = true;

      sb.append("argument:");
      if (this.argument == null) {
        sb.append("null");
      } else {
        sb.append(this.argument);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
      if (argument != null) {
        argument.validate();
      }
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testInsanity_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testInsanity_argsStandardScheme getScheme() {
        return new testInsanity_argsStandardScheme();
      }
    }

    private static class testInsanity_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testInsanity_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testInsanity_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: // ARGUMENT
              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                struct.argument = new Insanity();
                struct.argument.read(iprot);
                struct.setArgumentIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testInsanity_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.argument != null) {
          oprot.writeFieldBegin(ARGUMENT_FIELD_DESC);
          struct.argument.write(oprot);
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testInsanity_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testInsanity_argsTupleScheme getScheme() {
        return new testInsanity_argsTupleScheme();
      }
    }

    private static class testInsanity_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testInsanity_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testInsanity_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetArgument()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetArgument()) {
          struct.argument.write(oprot);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testInsanity_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.argument = new Insanity();
          struct.argument.read(iprot);
          struct.setArgumentIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testInsanity_result implements org.apache.thrift.TBase<testInsanity_result, testInsanity_result._Fields>, java.io.Serializable, Cloneable, Comparable<testInsanity_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testInsanity_result");

    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.MAP, (short)0);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testInsanity_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testInsanity_resultTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.Long,java.util.Map<Numberz,Insanity>> success; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      SUCCESS((short)0, "success");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 0: // SUCCESS
            return SUCCESS;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
              new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64              , "UserId"), 
              new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
                  new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, Numberz.class), 
                  new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Insanity.class)))));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testInsanity_result.class, metaDataMap);
    }

    public testInsanity_result() {
    }

    public testInsanity_result(
      java.util.Map<java.lang.Long,java.util.Map<Numberz,Insanity>> success)
    {
      this();
      this.success = success;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testInsanity_result(testInsanity_result other) {
      if (other.isSetSuccess()) {
        java.util.Map<java.lang.Long,java.util.Map<Numberz,Insanity>> __this__success = new java.util.HashMap<java.lang.Long,java.util.Map<Numberz,Insanity>>(other.success.size());
        for (java.util.Map.Entry<java.lang.Long, java.util.Map<Numberz,Insanity>> other_element : other.success.entrySet()) {

          java.lang.Long other_element_key = other_element.getKey();
          java.util.Map<Numberz,Insanity> other_element_value = other_element.getValue();

          java.lang.Long __this__success_copy_key = other_element_key;

          java.util.Map<Numberz,Insanity> __this__success_copy_value = new java.util.EnumMap<Numberz,Insanity>(Numberz.class);
          for (java.util.Map.Entry<Numberz, Insanity> other_element_value_element : other_element_value.entrySet()) {

            Numberz other_element_value_element_key = other_element_value_element.getKey();
            Insanity other_element_value_element_value = other_element_value_element.getValue();

            Numberz __this__success_copy_value_copy_key = other_element_value_element_key;

            Insanity __this__success_copy_value_copy_value = new Insanity(other_element_value_element_value);

            __this__success_copy_value.put(__this__success_copy_value_copy_key, __this__success_copy_value_copy_value);
          }

          __this__success.put(__this__success_copy_key, __this__success_copy_value);
        }
        this.success = __this__success;
      }
    }

    public testInsanity_result deepCopy() {
      return new testInsanity_result(this);
    }

    @Override
    public void clear() {
      this.success = null;
    }

    public int getSuccessSize() {
      return (this.success == null) ? 0 : this.success.size();
    }

    public void putToSuccess(long key, java.util.Map<Numberz,Insanity> val) {
      if (this.success == null) {
        this.success = new java.util.HashMap<java.lang.Long,java.util.Map<Numberz,Insanity>>();
      }
      this.success.put(key, val);
    }

    @org.apache.thrift.annotation.Nullable
    public java.util.Map<java.lang.Long,java.util.Map<Numberz,Insanity>> getSuccess() {
      return this.success;
    }

    public testInsanity_result setSuccess(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.Long,java.util.Map<Numberz,Insanity>> success) {
      this.success = success;
      return this;
    }

    public void unsetSuccess() {
      this.success = null;
    }

    /** Returns true if field success is set (has been assigned a value) and false otherwise */
    public boolean isSetSuccess() {
      return this.success != null;
    }

    public void setSuccessIsSet(boolean value) {
      if (!value) {
        this.success = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case SUCCESS:
        if (value == null) {
          unsetSuccess();
        } else {
          setSuccess((java.util.Map<java.lang.Long,java.util.Map<Numberz,Insanity>>)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case SUCCESS:
        return getSuccess();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case SUCCESS:
        return isSetSuccess();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testInsanity_result)
        return this.equals((testInsanity_result)that);
      return false;
    }

    public boolean equals(testInsanity_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_success = true && this.isSetSuccess();
      boolean that_present_success = true && that.isSetSuccess();
      if (this_present_success || that_present_success) {
        if (!(this_present_success && that_present_success))
          return false;
        if (!this.success.equals(that.success))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
      if (isSetSuccess())
        hashCode = hashCode * 8191 + success.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testInsanity_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetSuccess(), other.isSetSuccess());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetSuccess()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testInsanity_result(");
      boolean first = true;

      sb.append("success:");
      if (this.success == null) {
        sb.append("null");
      } else {
        sb.append(this.success);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testInsanity_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testInsanity_resultStandardScheme getScheme() {
        return new testInsanity_resultStandardScheme();
      }
    }

    private static class testInsanity_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testInsanity_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testInsanity_result 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 0: // SUCCESS
              if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                {
                  org.apache.thrift.protocol.TMap _map416 = iprot.readMapBegin();
                  struct.success = new java.util.HashMap<java.lang.Long,java.util.Map<Numberz,Insanity>>(2*_map416.size);
                  long _key417;
                  @org.apache.thrift.annotation.Nullable java.util.Map<Numberz,Insanity> _val418;
                  for (int _i419 = 0; _i419 < _map416.size; ++_i419)
                  {
                    _key417 = iprot.readI64();
                    {
                      org.apache.thrift.protocol.TMap _map420 = iprot.readMapBegin();
                      _val418 = new java.util.EnumMap<Numberz,Insanity>(Numberz.class);
                      @org.apache.thrift.annotation.Nullable Numberz _key421;
                      @org.apache.thrift.annotation.Nullable Insanity _val422;
                      for (int _i423 = 0; _i423 < _map420.size; ++_i423)
                      {
                        _key421 = com.thrift.example.real.thrift.test.Numberz.findByValue(iprot.readI32());
                        _val422 = new Insanity();
                        _val422.read(iprot);
                        if (_key421 != null)
                        {
                          _val418.put(_key421, _val422);
                        }
                      }
                      iprot.readMapEnd();
                    }
                    struct.success.put(_key417, _val418);
                  }
                  iprot.readMapEnd();
                }
                struct.setSuccessIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testInsanity_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.success != null) {
          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
          {
            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.I64, org.apache.thrift.protocol.TType.MAP, struct.success.size()));
            for (java.util.Map.Entry<java.lang.Long, java.util.Map<Numberz,Insanity>> _iter424 : struct.success.entrySet())
            {
              oprot.writeI64(_iter424.getKey());
              {
                oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.I32, org.apache.thrift.protocol.TType.STRUCT, _iter424.getValue().size()));
                for (java.util.Map.Entry<Numberz, Insanity> _iter425 : _iter424.getValue().entrySet())
                {
                  oprot.writeI32(_iter425.getKey().getValue());
                  _iter425.getValue().write(oprot);
                }
                oprot.writeMapEnd();
              }
            }
            oprot.writeMapEnd();
          }
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testInsanity_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testInsanity_resultTupleScheme getScheme() {
        return new testInsanity_resultTupleScheme();
      }
    }

    private static class testInsanity_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testInsanity_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testInsanity_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetSuccess()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetSuccess()) {
          {
            oprot.writeI32(struct.success.size());
            for (java.util.Map.Entry<java.lang.Long, java.util.Map<Numberz,Insanity>> _iter426 : struct.success.entrySet())
            {
              oprot.writeI64(_iter426.getKey());
              {
                oprot.writeI32(_iter426.getValue().size());
                for (java.util.Map.Entry<Numberz, Insanity> _iter427 : _iter426.getValue().entrySet())
                {
                  oprot.writeI32(_iter427.getKey().getValue());
                  _iter427.getValue().write(oprot);
                }
              }
            }
          }
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testInsanity_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          {
            org.apache.thrift.protocol.TMap _map428 = iprot.readMapBegin(org.apache.thrift.protocol.TType.I64, org.apache.thrift.protocol.TType.MAP); 
            struct.success = new java.util.HashMap<java.lang.Long,java.util.Map<Numberz,Insanity>>(2*_map428.size);
            long _key429;
            @org.apache.thrift.annotation.Nullable java.util.Map<Numberz,Insanity> _val430;
            for (int _i431 = 0; _i431 < _map428.size; ++_i431)
            {
              _key429 = iprot.readI64();
              {
                org.apache.thrift.protocol.TMap _map432 = iprot.readMapBegin(org.apache.thrift.protocol.TType.I32, org.apache.thrift.protocol.TType.STRUCT); 
                _val430 = new java.util.EnumMap<Numberz,Insanity>(Numberz.class);
                @org.apache.thrift.annotation.Nullable Numberz _key433;
                @org.apache.thrift.annotation.Nullable Insanity _val434;
                for (int _i435 = 0; _i435 < _map432.size; ++_i435)
                {
                  _key433 = com.thrift.example.real.thrift.test.Numberz.findByValue(iprot.readI32());
                  _val434 = new Insanity();
                  _val434.read(iprot);
                  if (_key433 != null)
                  {
                    _val430.put(_key433, _val434);
                  }
                }
              }
              struct.success.put(_key429, _val430);
            }
          }
          struct.setSuccessIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testMulti_args implements org.apache.thrift.TBase<testMulti_args, testMulti_args._Fields>, java.io.Serializable, Cloneable, Comparable<testMulti_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testMulti_args");

    private static final org.apache.thrift.protocol.TField ARG0_FIELD_DESC = new org.apache.thrift.protocol.TField("arg0", org.apache.thrift.protocol.TType.BYTE, (short)1);
    private static final org.apache.thrift.protocol.TField ARG1_FIELD_DESC = new org.apache.thrift.protocol.TField("arg1", org.apache.thrift.protocol.TType.I32, (short)2);
    private static final org.apache.thrift.protocol.TField ARG2_FIELD_DESC = new org.apache.thrift.protocol.TField("arg2", org.apache.thrift.protocol.TType.I64, (short)3);
    private static final org.apache.thrift.protocol.TField ARG3_FIELD_DESC = new org.apache.thrift.protocol.TField("arg3", org.apache.thrift.protocol.TType.MAP, (short)4);
    private static final org.apache.thrift.protocol.TField ARG4_FIELD_DESC = new org.apache.thrift.protocol.TField("arg4", org.apache.thrift.protocol.TType.I32, (short)5);
    private static final org.apache.thrift.protocol.TField ARG5_FIELD_DESC = new org.apache.thrift.protocol.TField("arg5", org.apache.thrift.protocol.TType.I64, (short)6);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testMulti_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testMulti_argsTupleSchemeFactory();

    public byte arg0; // required
    public int arg1; // required
    public long arg2; // required
    public @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.Short,java.lang.String> arg3; // required
    /**
     * 
     * @see Numberz
     */
    public @org.apache.thrift.annotation.Nullable Numberz arg4; // required
    public long arg5; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      ARG0((short)1, "arg0"),
      ARG1((short)2, "arg1"),
      ARG2((short)3, "arg2"),
      ARG3((short)4, "arg3"),
      /**
       * 
       * @see Numberz
       */
      ARG4((short)5, "arg4"),
      ARG5((short)6, "arg5");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // ARG0
            return ARG0;
          case 2: // ARG1
            return ARG1;
          case 3: // ARG2
            return ARG2;
          case 4: // ARG3
            return ARG3;
          case 5: // ARG4
            return ARG4;
          case 6: // ARG5
            return ARG5;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    private static final int __ARG0_ISSET_ID = 0;
    private static final int __ARG1_ISSET_ID = 1;
    private static final int __ARG2_ISSET_ID = 2;
    private static final int __ARG5_ISSET_ID = 3;
    private byte __isset_bitfield = 0;
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.ARG0, new org.apache.thrift.meta_data.FieldMetaData("arg0", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BYTE)));
      tmpMap.put(_Fields.ARG1, new org.apache.thrift.meta_data.FieldMetaData("arg1", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
      tmpMap.put(_Fields.ARG2, new org.apache.thrift.meta_data.FieldMetaData("arg2", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
      tmpMap.put(_Fields.ARG3, new org.apache.thrift.meta_data.FieldMetaData("arg3", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
              new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I16), 
              new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
      tmpMap.put(_Fields.ARG4, new org.apache.thrift.meta_data.FieldMetaData("arg4", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, Numberz.class)));
      tmpMap.put(_Fields.ARG5, new org.apache.thrift.meta_data.FieldMetaData("arg5", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64          , "UserId")));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testMulti_args.class, metaDataMap);
    }

    public testMulti_args() {
    }

    public testMulti_args(
      byte arg0,
      int arg1,
      long arg2,
      java.util.Map<java.lang.Short,java.lang.String> arg3,
      Numberz arg4,
      long arg5)
    {
      this();
      this.arg0 = arg0;
      setArg0IsSet(true);
      this.arg1 = arg1;
      setArg1IsSet(true);
      this.arg2 = arg2;
      setArg2IsSet(true);
      this.arg3 = arg3;
      this.arg4 = arg4;
      this.arg5 = arg5;
      setArg5IsSet(true);
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testMulti_args(testMulti_args other) {
      __isset_bitfield = other.__isset_bitfield;
      this.arg0 = other.arg0;
      this.arg1 = other.arg1;
      this.arg2 = other.arg2;
      if (other.isSetArg3()) {
        java.util.Map<java.lang.Short,java.lang.String> __this__arg3 = new java.util.HashMap<java.lang.Short,java.lang.String>(other.arg3);
        this.arg3 = __this__arg3;
      }
      if (other.isSetArg4()) {
        this.arg4 = other.arg4;
      }
      this.arg5 = other.arg5;
    }

    public testMulti_args deepCopy() {
      return new testMulti_args(this);
    }

    @Override
    public void clear() {
      setArg0IsSet(false);
      this.arg0 = 0;
      setArg1IsSet(false);
      this.arg1 = 0;
      setArg2IsSet(false);
      this.arg2 = 0;
      this.arg3 = null;
      this.arg4 = null;
      setArg5IsSet(false);
      this.arg5 = 0;
    }

    public byte getArg0() {
      return this.arg0;
    }

    public testMulti_args setArg0(byte arg0) {
      this.arg0 = arg0;
      setArg0IsSet(true);
      return this;
    }

    public void unsetArg0() {
      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __ARG0_ISSET_ID);
    }

    /** Returns true if field arg0 is set (has been assigned a value) and false otherwise */
    public boolean isSetArg0() {
      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __ARG0_ISSET_ID);
    }

    public void setArg0IsSet(boolean value) {
      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __ARG0_ISSET_ID, value);
    }

    public int getArg1() {
      return this.arg1;
    }

    public testMulti_args setArg1(int arg1) {
      this.arg1 = arg1;
      setArg1IsSet(true);
      return this;
    }

    public void unsetArg1() {
      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __ARG1_ISSET_ID);
    }

    /** Returns true if field arg1 is set (has been assigned a value) and false otherwise */
    public boolean isSetArg1() {
      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __ARG1_ISSET_ID);
    }

    public void setArg1IsSet(boolean value) {
      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __ARG1_ISSET_ID, value);
    }

    public long getArg2() {
      return this.arg2;
    }

    public testMulti_args setArg2(long arg2) {
      this.arg2 = arg2;
      setArg2IsSet(true);
      return this;
    }

    public void unsetArg2() {
      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __ARG2_ISSET_ID);
    }

    /** Returns true if field arg2 is set (has been assigned a value) and false otherwise */
    public boolean isSetArg2() {
      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __ARG2_ISSET_ID);
    }

    public void setArg2IsSet(boolean value) {
      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __ARG2_ISSET_ID, value);
    }

    public int getArg3Size() {
      return (this.arg3 == null) ? 0 : this.arg3.size();
    }

    public void putToArg3(short key, java.lang.String val) {
      if (this.arg3 == null) {
        this.arg3 = new java.util.HashMap<java.lang.Short,java.lang.String>();
      }
      this.arg3.put(key, val);
    }

    @org.apache.thrift.annotation.Nullable
    public java.util.Map<java.lang.Short,java.lang.String> getArg3() {
      return this.arg3;
    }

    public testMulti_args setArg3(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.Short,java.lang.String> arg3) {
      this.arg3 = arg3;
      return this;
    }

    public void unsetArg3() {
      this.arg3 = null;
    }

    /** Returns true if field arg3 is set (has been assigned a value) and false otherwise */
    public boolean isSetArg3() {
      return this.arg3 != null;
    }

    public void setArg3IsSet(boolean value) {
      if (!value) {
        this.arg3 = null;
      }
    }

    /**
     * 
     * @see Numberz
     */
    @org.apache.thrift.annotation.Nullable
    public Numberz getArg4() {
      return this.arg4;
    }

    /**
     * 
     * @see Numberz
     */
    public testMulti_args setArg4(@org.apache.thrift.annotation.Nullable Numberz arg4) {
      this.arg4 = arg4;
      return this;
    }

    public void unsetArg4() {
      this.arg4 = null;
    }

    /** Returns true if field arg4 is set (has been assigned a value) and false otherwise */
    public boolean isSetArg4() {
      return this.arg4 != null;
    }

    public void setArg4IsSet(boolean value) {
      if (!value) {
        this.arg4 = null;
      }
    }

    public long getArg5() {
      return this.arg5;
    }

    public testMulti_args setArg5(long arg5) {
      this.arg5 = arg5;
      setArg5IsSet(true);
      return this;
    }

    public void unsetArg5() {
      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __ARG5_ISSET_ID);
    }

    /** Returns true if field arg5 is set (has been assigned a value) and false otherwise */
    public boolean isSetArg5() {
      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __ARG5_ISSET_ID);
    }

    public void setArg5IsSet(boolean value) {
      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __ARG5_ISSET_ID, value);
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case ARG0:
        if (value == null) {
          unsetArg0();
        } else {
          setArg0((java.lang.Byte)value);
        }
        break;

      case ARG1:
        if (value == null) {
          unsetArg1();
        } else {
          setArg1((java.lang.Integer)value);
        }
        break;

      case ARG2:
        if (value == null) {
          unsetArg2();
        } else {
          setArg2((java.lang.Long)value);
        }
        break;

      case ARG3:
        if (value == null) {
          unsetArg3();
        } else {
          setArg3((java.util.Map<java.lang.Short,java.lang.String>)value);
        }
        break;

      case ARG4:
        if (value == null) {
          unsetArg4();
        } else {
          setArg4((Numberz)value);
        }
        break;

      case ARG5:
        if (value == null) {
          unsetArg5();
        } else {
          setArg5((java.lang.Long)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case ARG0:
        return getArg0();

      case ARG1:
        return getArg1();

      case ARG2:
        return getArg2();

      case ARG3:
        return getArg3();

      case ARG4:
        return getArg4();

      case ARG5:
        return getArg5();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case ARG0:
        return isSetArg0();
      case ARG1:
        return isSetArg1();
      case ARG2:
        return isSetArg2();
      case ARG3:
        return isSetArg3();
      case ARG4:
        return isSetArg4();
      case ARG5:
        return isSetArg5();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testMulti_args)
        return this.equals((testMulti_args)that);
      return false;
    }

    public boolean equals(testMulti_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_arg0 = true;
      boolean that_present_arg0 = true;
      if (this_present_arg0 || that_present_arg0) {
        if (!(this_present_arg0 && that_present_arg0))
          return false;
        if (this.arg0 != that.arg0)
          return false;
      }

      boolean this_present_arg1 = true;
      boolean that_present_arg1 = true;
      if (this_present_arg1 || that_present_arg1) {
        if (!(this_present_arg1 && that_present_arg1))
          return false;
        if (this.arg1 != that.arg1)
          return false;
      }

      boolean this_present_arg2 = true;
      boolean that_present_arg2 = true;
      if (this_present_arg2 || that_present_arg2) {
        if (!(this_present_arg2 && that_present_arg2))
          return false;
        if (this.arg2 != that.arg2)
          return false;
      }

      boolean this_present_arg3 = true && this.isSetArg3();
      boolean that_present_arg3 = true && that.isSetArg3();
      if (this_present_arg3 || that_present_arg3) {
        if (!(this_present_arg3 && that_present_arg3))
          return false;
        if (!this.arg3.equals(that.arg3))
          return false;
      }

      boolean this_present_arg4 = true && this.isSetArg4();
      boolean that_present_arg4 = true && that.isSetArg4();
      if (this_present_arg4 || that_present_arg4) {
        if (!(this_present_arg4 && that_present_arg4))
          return false;
        if (!this.arg4.equals(that.arg4))
          return false;
      }

      boolean this_present_arg5 = true;
      boolean that_present_arg5 = true;
      if (this_present_arg5 || that_present_arg5) {
        if (!(this_present_arg5 && that_present_arg5))
          return false;
        if (this.arg5 != that.arg5)
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + (int) (arg0);

      hashCode = hashCode * 8191 + arg1;

      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(arg2);

      hashCode = hashCode * 8191 + ((isSetArg3()) ? 131071 : 524287);
      if (isSetArg3())
        hashCode = hashCode * 8191 + arg3.hashCode();

      hashCode = hashCode * 8191 + ((isSetArg4()) ? 131071 : 524287);
      if (isSetArg4())
        hashCode = hashCode * 8191 + arg4.getValue();

      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(arg5);

      return hashCode;
    }

    @Override
    public int compareTo(testMulti_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetArg0(), other.isSetArg0());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetArg0()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.arg0, other.arg0);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      lastComparison = java.lang.Boolean.compare(isSetArg1(), other.isSetArg1());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetArg1()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.arg1, other.arg1);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      lastComparison = java.lang.Boolean.compare(isSetArg2(), other.isSetArg2());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetArg2()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.arg2, other.arg2);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      lastComparison = java.lang.Boolean.compare(isSetArg3(), other.isSetArg3());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetArg3()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.arg3, other.arg3);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      lastComparison = java.lang.Boolean.compare(isSetArg4(), other.isSetArg4());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetArg4()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.arg4, other.arg4);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      lastComparison = java.lang.Boolean.compare(isSetArg5(), other.isSetArg5());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetArg5()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.arg5, other.arg5);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testMulti_args(");
      boolean first = true;

      sb.append("arg0:");
      sb.append(this.arg0);
      first = false;
      if (!first) sb.append(", ");
      sb.append("arg1:");
      sb.append(this.arg1);
      first = false;
      if (!first) sb.append(", ");
      sb.append("arg2:");
      sb.append(this.arg2);
      first = false;
      if (!first) sb.append(", ");
      sb.append("arg3:");
      if (this.arg3 == null) {
        sb.append("null");
      } else {
        sb.append(this.arg3);
      }
      first = false;
      if (!first) sb.append(", ");
      sb.append("arg4:");
      if (this.arg4 == null) {
        sb.append("null");
      } else {
        sb.append(this.arg4);
      }
      first = false;
      if (!first) sb.append(", ");
      sb.append("arg5:");
      sb.append(this.arg5);
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
        __isset_bitfield = 0;
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testMulti_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testMulti_argsStandardScheme getScheme() {
        return new testMulti_argsStandardScheme();
      }
    }

    private static class testMulti_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testMulti_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testMulti_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: // ARG0
              if (schemeField.type == org.apache.thrift.protocol.TType.BYTE) {
                struct.arg0 = iprot.readByte();
                struct.setArg0IsSet(true);
              } else { 
                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
              }
              break;
            case 2: // ARG1
              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
                struct.arg1 = iprot.readI32();
                struct.setArg1IsSet(true);
              } else { 
                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
              }
              break;
            case 3: // ARG2
              if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
                struct.arg2 = iprot.readI64();
                struct.setArg2IsSet(true);
              } else { 
                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
              }
              break;
            case 4: // ARG3
              if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                {
                  org.apache.thrift.protocol.TMap _map436 = iprot.readMapBegin();
                  struct.arg3 = new java.util.HashMap<java.lang.Short,java.lang.String>(2*_map436.size);
                  short _key437;
                  @org.apache.thrift.annotation.Nullable java.lang.String _val438;
                  for (int _i439 = 0; _i439 < _map436.size; ++_i439)
                  {
                    _key437 = iprot.readI16();
                    _val438 = iprot.readString();
                    struct.arg3.put(_key437, _val438);
                  }
                  iprot.readMapEnd();
                }
                struct.setArg3IsSet(true);
              } else { 
                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
              }
              break;
            case 5: // ARG4
              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
                struct.arg4 = com.thrift.example.real.thrift.test.Numberz.findByValue(iprot.readI32());
                struct.setArg4IsSet(true);
              } else { 
                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
              }
              break;
            case 6: // ARG5
              if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
                struct.arg5 = iprot.readI64();
                struct.setArg5IsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testMulti_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        oprot.writeFieldBegin(ARG0_FIELD_DESC);
        oprot.writeByte(struct.arg0);
        oprot.writeFieldEnd();
        oprot.writeFieldBegin(ARG1_FIELD_DESC);
        oprot.writeI32(struct.arg1);
        oprot.writeFieldEnd();
        oprot.writeFieldBegin(ARG2_FIELD_DESC);
        oprot.writeI64(struct.arg2);
        oprot.writeFieldEnd();
        if (struct.arg3 != null) {
          oprot.writeFieldBegin(ARG3_FIELD_DESC);
          {
            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.I16, org.apache.thrift.protocol.TType.STRING, struct.arg3.size()));
            for (java.util.Map.Entry<java.lang.Short, java.lang.String> _iter440 : struct.arg3.entrySet())
            {
              oprot.writeI16(_iter440.getKey());
              oprot.writeString(_iter440.getValue());
            }
            oprot.writeMapEnd();
          }
          oprot.writeFieldEnd();
        }
        if (struct.arg4 != null) {
          oprot.writeFieldBegin(ARG4_FIELD_DESC);
          oprot.writeI32(struct.arg4.getValue());
          oprot.writeFieldEnd();
        }
        oprot.writeFieldBegin(ARG5_FIELD_DESC);
        oprot.writeI64(struct.arg5);
        oprot.writeFieldEnd();
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testMulti_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testMulti_argsTupleScheme getScheme() {
        return new testMulti_argsTupleScheme();
      }
    }

    private static class testMulti_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testMulti_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testMulti_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetArg0()) {
          optionals.set(0);
        }
        if (struct.isSetArg1()) {
          optionals.set(1);
        }
        if (struct.isSetArg2()) {
          optionals.set(2);
        }
        if (struct.isSetArg3()) {
          optionals.set(3);
        }
        if (struct.isSetArg4()) {
          optionals.set(4);
        }
        if (struct.isSetArg5()) {
          optionals.set(5);
        }
        oprot.writeBitSet(optionals, 6);
        if (struct.isSetArg0()) {
          oprot.writeByte(struct.arg0);
        }
        if (struct.isSetArg1()) {
          oprot.writeI32(struct.arg1);
        }
        if (struct.isSetArg2()) {
          oprot.writeI64(struct.arg2);
        }
        if (struct.isSetArg3()) {
          {
            oprot.writeI32(struct.arg3.size());
            for (java.util.Map.Entry<java.lang.Short, java.lang.String> _iter441 : struct.arg3.entrySet())
            {
              oprot.writeI16(_iter441.getKey());
              oprot.writeString(_iter441.getValue());
            }
          }
        }
        if (struct.isSetArg4()) {
          oprot.writeI32(struct.arg4.getValue());
        }
        if (struct.isSetArg5()) {
          oprot.writeI64(struct.arg5);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testMulti_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(6);
        if (incoming.get(0)) {
          struct.arg0 = iprot.readByte();
          struct.setArg0IsSet(true);
        }
        if (incoming.get(1)) {
          struct.arg1 = iprot.readI32();
          struct.setArg1IsSet(true);
        }
        if (incoming.get(2)) {
          struct.arg2 = iprot.readI64();
          struct.setArg2IsSet(true);
        }
        if (incoming.get(3)) {
          {
            org.apache.thrift.protocol.TMap _map442 = iprot.readMapBegin(org.apache.thrift.protocol.TType.I16, org.apache.thrift.protocol.TType.STRING); 
            struct.arg3 = new java.util.HashMap<java.lang.Short,java.lang.String>(2*_map442.size);
            short _key443;
            @org.apache.thrift.annotation.Nullable java.lang.String _val444;
            for (int _i445 = 0; _i445 < _map442.size; ++_i445)
            {
              _key443 = iprot.readI16();
              _val444 = iprot.readString();
              struct.arg3.put(_key443, _val444);
            }
          }
          struct.setArg3IsSet(true);
        }
        if (incoming.get(4)) {
          struct.arg4 = com.thrift.example.real.thrift.test.Numberz.findByValue(iprot.readI32());
          struct.setArg4IsSet(true);
        }
        if (incoming.get(5)) {
          struct.arg5 = iprot.readI64();
          struct.setArg5IsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testMulti_result implements org.apache.thrift.TBase<testMulti_result, testMulti_result._Fields>, java.io.Serializable, Cloneable, Comparable<testMulti_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testMulti_result");

    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRUCT, (short)0);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testMulti_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testMulti_resultTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable Xtruct success; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      SUCCESS((short)0, "success");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 0: // SUCCESS
            return SUCCESS;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Xtruct.class)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testMulti_result.class, metaDataMap);
    }

    public testMulti_result() {
    }

    public testMulti_result(
      Xtruct success)
    {
      this();
      this.success = success;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testMulti_result(testMulti_result other) {
      if (other.isSetSuccess()) {
        this.success = new Xtruct(other.success);
      }
    }

    public testMulti_result deepCopy() {
      return new testMulti_result(this);
    }

    @Override
    public void clear() {
      this.success = null;
    }

    @org.apache.thrift.annotation.Nullable
    public Xtruct getSuccess() {
      return this.success;
    }

    public testMulti_result setSuccess(@org.apache.thrift.annotation.Nullable Xtruct success) {
      this.success = success;
      return this;
    }

    public void unsetSuccess() {
      this.success = null;
    }

    /** Returns true if field success is set (has been assigned a value) and false otherwise */
    public boolean isSetSuccess() {
      return this.success != null;
    }

    public void setSuccessIsSet(boolean value) {
      if (!value) {
        this.success = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case SUCCESS:
        if (value == null) {
          unsetSuccess();
        } else {
          setSuccess((Xtruct)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case SUCCESS:
        return getSuccess();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case SUCCESS:
        return isSetSuccess();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testMulti_result)
        return this.equals((testMulti_result)that);
      return false;
    }

    public boolean equals(testMulti_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_success = true && this.isSetSuccess();
      boolean that_present_success = true && that.isSetSuccess();
      if (this_present_success || that_present_success) {
        if (!(this_present_success && that_present_success))
          return false;
        if (!this.success.equals(that.success))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
      if (isSetSuccess())
        hashCode = hashCode * 8191 + success.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testMulti_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetSuccess(), other.isSetSuccess());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetSuccess()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testMulti_result(");
      boolean first = true;

      sb.append("success:");
      if (this.success == null) {
        sb.append("null");
      } else {
        sb.append(this.success);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
      if (success != null) {
        success.validate();
      }
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testMulti_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testMulti_resultStandardScheme getScheme() {
        return new testMulti_resultStandardScheme();
      }
    }

    private static class testMulti_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testMulti_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testMulti_result 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 0: // SUCCESS
              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                struct.success = new Xtruct();
                struct.success.read(iprot);
                struct.setSuccessIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testMulti_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.success != null) {
          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
          struct.success.write(oprot);
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testMulti_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testMulti_resultTupleScheme getScheme() {
        return new testMulti_resultTupleScheme();
      }
    }

    private static class testMulti_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testMulti_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testMulti_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetSuccess()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetSuccess()) {
          struct.success.write(oprot);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testMulti_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.success = new Xtruct();
          struct.success.read(iprot);
          struct.setSuccessIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testException_args implements org.apache.thrift.TBase<testException_args, testException_args._Fields>, java.io.Serializable, Cloneable, Comparable<testException_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testException_args");

    private static final org.apache.thrift.protocol.TField ARG_FIELD_DESC = new org.apache.thrift.protocol.TField("arg", org.apache.thrift.protocol.TType.STRING, (short)1);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testException_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testException_argsTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable java.lang.String arg; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      ARG((short)1, "arg");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // ARG
            return ARG;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.ARG, new org.apache.thrift.meta_data.FieldMetaData("arg", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testException_args.class, metaDataMap);
    }

    public testException_args() {
    }

    public testException_args(
      java.lang.String arg)
    {
      this();
      this.arg = arg;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testException_args(testException_args other) {
      if (other.isSetArg()) {
        this.arg = other.arg;
      }
    }

    public testException_args deepCopy() {
      return new testException_args(this);
    }

    @Override
    public void clear() {
      this.arg = null;
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.String getArg() {
      return this.arg;
    }

    public testException_args setArg(@org.apache.thrift.annotation.Nullable java.lang.String arg) {
      this.arg = arg;
      return this;
    }

    public void unsetArg() {
      this.arg = null;
    }

    /** Returns true if field arg is set (has been assigned a value) and false otherwise */
    public boolean isSetArg() {
      return this.arg != null;
    }

    public void setArgIsSet(boolean value) {
      if (!value) {
        this.arg = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case ARG:
        if (value == null) {
          unsetArg();
        } else {
          setArg((java.lang.String)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case ARG:
        return getArg();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case ARG:
        return isSetArg();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testException_args)
        return this.equals((testException_args)that);
      return false;
    }

    public boolean equals(testException_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_arg = true && this.isSetArg();
      boolean that_present_arg = true && that.isSetArg();
      if (this_present_arg || that_present_arg) {
        if (!(this_present_arg && that_present_arg))
          return false;
        if (!this.arg.equals(that.arg))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetArg()) ? 131071 : 524287);
      if (isSetArg())
        hashCode = hashCode * 8191 + arg.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testException_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetArg(), other.isSetArg());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetArg()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.arg, other.arg);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testException_args(");
      boolean first = true;

      sb.append("arg:");
      if (this.arg == null) {
        sb.append("null");
      } else {
        sb.append(this.arg);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testException_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testException_argsStandardScheme getScheme() {
        return new testException_argsStandardScheme();
      }
    }

    private static class testException_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testException_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testException_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: // ARG
              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                struct.arg = iprot.readString();
                struct.setArgIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testException_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.arg != null) {
          oprot.writeFieldBegin(ARG_FIELD_DESC);
          oprot.writeString(struct.arg);
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testException_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testException_argsTupleScheme getScheme() {
        return new testException_argsTupleScheme();
      }
    }

    private static class testException_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testException_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testException_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetArg()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetArg()) {
          oprot.writeString(struct.arg);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testException_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.arg = iprot.readString();
          struct.setArgIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testException_result implements org.apache.thrift.TBase<testException_result, testException_result._Fields>, java.io.Serializable, Cloneable, Comparable<testException_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testException_result");

    private static final org.apache.thrift.protocol.TField ERR1_FIELD_DESC = new org.apache.thrift.protocol.TField("err1", org.apache.thrift.protocol.TType.STRUCT, (short)1);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testException_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testException_resultTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable Xception err1; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      ERR1((short)1, "err1");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // ERR1
            return ERR1;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.ERR1, new org.apache.thrift.meta_data.FieldMetaData("err1", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Xception.class)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testException_result.class, metaDataMap);
    }

    public testException_result() {
    }

    public testException_result(
      Xception err1)
    {
      this();
      this.err1 = err1;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testException_result(testException_result other) {
      if (other.isSetErr1()) {
        this.err1 = new Xception(other.err1);
      }
    }

    public testException_result deepCopy() {
      return new testException_result(this);
    }

    @Override
    public void clear() {
      this.err1 = null;
    }

    @org.apache.thrift.annotation.Nullable
    public Xception getErr1() {
      return this.err1;
    }

    public testException_result setErr1(@org.apache.thrift.annotation.Nullable Xception err1) {
      this.err1 = err1;
      return this;
    }

    public void unsetErr1() {
      this.err1 = null;
    }

    /** Returns true if field err1 is set (has been assigned a value) and false otherwise */
    public boolean isSetErr1() {
      return this.err1 != null;
    }

    public void setErr1IsSet(boolean value) {
      if (!value) {
        this.err1 = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case ERR1:
        if (value == null) {
          unsetErr1();
        } else {
          setErr1((Xception)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case ERR1:
        return getErr1();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case ERR1:
        return isSetErr1();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testException_result)
        return this.equals((testException_result)that);
      return false;
    }

    public boolean equals(testException_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_err1 = true && this.isSetErr1();
      boolean that_present_err1 = true && that.isSetErr1();
      if (this_present_err1 || that_present_err1) {
        if (!(this_present_err1 && that_present_err1))
          return false;
        if (!this.err1.equals(that.err1))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetErr1()) ? 131071 : 524287);
      if (isSetErr1())
        hashCode = hashCode * 8191 + err1.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testException_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetErr1(), other.isSetErr1());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetErr1()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.err1, other.err1);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testException_result(");
      boolean first = true;

      sb.append("err1:");
      if (this.err1 == null) {
        sb.append("null");
      } else {
        sb.append(this.err1);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testException_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testException_resultStandardScheme getScheme() {
        return new testException_resultStandardScheme();
      }
    }

    private static class testException_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testException_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testException_result 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: // ERR1
              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                struct.err1 = new Xception();
                struct.err1.read(iprot);
                struct.setErr1IsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testException_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.err1 != null) {
          oprot.writeFieldBegin(ERR1_FIELD_DESC);
          struct.err1.write(oprot);
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testException_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testException_resultTupleScheme getScheme() {
        return new testException_resultTupleScheme();
      }
    }

    private static class testException_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testException_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testException_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetErr1()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetErr1()) {
          struct.err1.write(oprot);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testException_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.err1 = new Xception();
          struct.err1.read(iprot);
          struct.setErr1IsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testMultiException_args implements org.apache.thrift.TBase<testMultiException_args, testMultiException_args._Fields>, java.io.Serializable, Cloneable, Comparable<testMultiException_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testMultiException_args");

    private static final org.apache.thrift.protocol.TField ARG0_FIELD_DESC = new org.apache.thrift.protocol.TField("arg0", org.apache.thrift.protocol.TType.STRING, (short)1);
    private static final org.apache.thrift.protocol.TField ARG1_FIELD_DESC = new org.apache.thrift.protocol.TField("arg1", org.apache.thrift.protocol.TType.STRING, (short)2);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testMultiException_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testMultiException_argsTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable java.lang.String arg0; // required
    public @org.apache.thrift.annotation.Nullable java.lang.String arg1; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      ARG0((short)1, "arg0"),
      ARG1((short)2, "arg1");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // ARG0
            return ARG0;
          case 2: // ARG1
            return ARG1;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.ARG0, new org.apache.thrift.meta_data.FieldMetaData("arg0", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
      tmpMap.put(_Fields.ARG1, new org.apache.thrift.meta_data.FieldMetaData("arg1", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testMultiException_args.class, metaDataMap);
    }

    public testMultiException_args() {
    }

    public testMultiException_args(
      java.lang.String arg0,
      java.lang.String arg1)
    {
      this();
      this.arg0 = arg0;
      this.arg1 = arg1;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testMultiException_args(testMultiException_args other) {
      if (other.isSetArg0()) {
        this.arg0 = other.arg0;
      }
      if (other.isSetArg1()) {
        this.arg1 = other.arg1;
      }
    }

    public testMultiException_args deepCopy() {
      return new testMultiException_args(this);
    }

    @Override
    public void clear() {
      this.arg0 = null;
      this.arg1 = null;
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.String getArg0() {
      return this.arg0;
    }

    public testMultiException_args setArg0(@org.apache.thrift.annotation.Nullable java.lang.String arg0) {
      this.arg0 = arg0;
      return this;
    }

    public void unsetArg0() {
      this.arg0 = null;
    }

    /** Returns true if field arg0 is set (has been assigned a value) and false otherwise */
    public boolean isSetArg0() {
      return this.arg0 != null;
    }

    public void setArg0IsSet(boolean value) {
      if (!value) {
        this.arg0 = null;
      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.String getArg1() {
      return this.arg1;
    }

    public testMultiException_args setArg1(@org.apache.thrift.annotation.Nullable java.lang.String arg1) {
      this.arg1 = arg1;
      return this;
    }

    public void unsetArg1() {
      this.arg1 = null;
    }

    /** Returns true if field arg1 is set (has been assigned a value) and false otherwise */
    public boolean isSetArg1() {
      return this.arg1 != null;
    }

    public void setArg1IsSet(boolean value) {
      if (!value) {
        this.arg1 = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case ARG0:
        if (value == null) {
          unsetArg0();
        } else {
          setArg0((java.lang.String)value);
        }
        break;

      case ARG1:
        if (value == null) {
          unsetArg1();
        } else {
          setArg1((java.lang.String)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case ARG0:
        return getArg0();

      case ARG1:
        return getArg1();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case ARG0:
        return isSetArg0();
      case ARG1:
        return isSetArg1();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testMultiException_args)
        return this.equals((testMultiException_args)that);
      return false;
    }

    public boolean equals(testMultiException_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_arg0 = true && this.isSetArg0();
      boolean that_present_arg0 = true && that.isSetArg0();
      if (this_present_arg0 || that_present_arg0) {
        if (!(this_present_arg0 && that_present_arg0))
          return false;
        if (!this.arg0.equals(that.arg0))
          return false;
      }

      boolean this_present_arg1 = true && this.isSetArg1();
      boolean that_present_arg1 = true && that.isSetArg1();
      if (this_present_arg1 || that_present_arg1) {
        if (!(this_present_arg1 && that_present_arg1))
          return false;
        if (!this.arg1.equals(that.arg1))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetArg0()) ? 131071 : 524287);
      if (isSetArg0())
        hashCode = hashCode * 8191 + arg0.hashCode();

      hashCode = hashCode * 8191 + ((isSetArg1()) ? 131071 : 524287);
      if (isSetArg1())
        hashCode = hashCode * 8191 + arg1.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testMultiException_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetArg0(), other.isSetArg0());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetArg0()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.arg0, other.arg0);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      lastComparison = java.lang.Boolean.compare(isSetArg1(), other.isSetArg1());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetArg1()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.arg1, other.arg1);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testMultiException_args(");
      boolean first = true;

      sb.append("arg0:");
      if (this.arg0 == null) {
        sb.append("null");
      } else {
        sb.append(this.arg0);
      }
      first = false;
      if (!first) sb.append(", ");
      sb.append("arg1:");
      if (this.arg1 == null) {
        sb.append("null");
      } else {
        sb.append(this.arg1);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testMultiException_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testMultiException_argsStandardScheme getScheme() {
        return new testMultiException_argsStandardScheme();
      }
    }

    private static class testMultiException_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testMultiException_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testMultiException_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: // ARG0
              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                struct.arg0 = iprot.readString();
                struct.setArg0IsSet(true);
              } else { 
                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
              }
              break;
            case 2: // ARG1
              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                struct.arg1 = iprot.readString();
                struct.setArg1IsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testMultiException_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.arg0 != null) {
          oprot.writeFieldBegin(ARG0_FIELD_DESC);
          oprot.writeString(struct.arg0);
          oprot.writeFieldEnd();
        }
        if (struct.arg1 != null) {
          oprot.writeFieldBegin(ARG1_FIELD_DESC);
          oprot.writeString(struct.arg1);
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testMultiException_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testMultiException_argsTupleScheme getScheme() {
        return new testMultiException_argsTupleScheme();
      }
    }

    private static class testMultiException_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testMultiException_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testMultiException_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetArg0()) {
          optionals.set(0);
        }
        if (struct.isSetArg1()) {
          optionals.set(1);
        }
        oprot.writeBitSet(optionals, 2);
        if (struct.isSetArg0()) {
          oprot.writeString(struct.arg0);
        }
        if (struct.isSetArg1()) {
          oprot.writeString(struct.arg1);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testMultiException_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(2);
        if (incoming.get(0)) {
          struct.arg0 = iprot.readString();
          struct.setArg0IsSet(true);
        }
        if (incoming.get(1)) {
          struct.arg1 = iprot.readString();
          struct.setArg1IsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testMultiException_result implements org.apache.thrift.TBase<testMultiException_result, testMultiException_result._Fields>, java.io.Serializable, Cloneable, Comparable<testMultiException_result>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testMultiException_result");

    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRUCT, (short)0);
    private static final org.apache.thrift.protocol.TField ERR1_FIELD_DESC = new org.apache.thrift.protocol.TField("err1", org.apache.thrift.protocol.TType.STRUCT, (short)1);
    private static final org.apache.thrift.protocol.TField ERR2_FIELD_DESC = new org.apache.thrift.protocol.TField("err2", org.apache.thrift.protocol.TType.STRUCT, (short)2);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testMultiException_resultStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testMultiException_resultTupleSchemeFactory();

    public @org.apache.thrift.annotation.Nullable Xtruct success; // required
    public @org.apache.thrift.annotation.Nullable Xception err1; // required
    public @org.apache.thrift.annotation.Nullable Xception2 err2; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      SUCCESS((short)0, "success"),
      ERR1((short)1, "err1"),
      ERR2((short)2, "err2");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 0: // SUCCESS
            return SUCCESS;
          case 1: // ERR1
            return ERR1;
          case 2: // ERR2
            return ERR2;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Xtruct.class)));
      tmpMap.put(_Fields.ERR1, new org.apache.thrift.meta_data.FieldMetaData("err1", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Xception.class)));
      tmpMap.put(_Fields.ERR2, new org.apache.thrift.meta_data.FieldMetaData("err2", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Xception2.class)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testMultiException_result.class, metaDataMap);
    }

    public testMultiException_result() {
    }

    public testMultiException_result(
      Xtruct success,
      Xception err1,
      Xception2 err2)
    {
      this();
      this.success = success;
      this.err1 = err1;
      this.err2 = err2;
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testMultiException_result(testMultiException_result other) {
      if (other.isSetSuccess()) {
        this.success = new Xtruct(other.success);
      }
      if (other.isSetErr1()) {
        this.err1 = new Xception(other.err1);
      }
      if (other.isSetErr2()) {
        this.err2 = new Xception2(other.err2);
      }
    }

    public testMultiException_result deepCopy() {
      return new testMultiException_result(this);
    }

    @Override
    public void clear() {
      this.success = null;
      this.err1 = null;
      this.err2 = null;
    }

    @org.apache.thrift.annotation.Nullable
    public Xtruct getSuccess() {
      return this.success;
    }

    public testMultiException_result setSuccess(@org.apache.thrift.annotation.Nullable Xtruct success) {
      this.success = success;
      return this;
    }

    public void unsetSuccess() {
      this.success = null;
    }

    /** Returns true if field success is set (has been assigned a value) and false otherwise */
    public boolean isSetSuccess() {
      return this.success != null;
    }

    public void setSuccessIsSet(boolean value) {
      if (!value) {
        this.success = null;
      }
    }

    @org.apache.thrift.annotation.Nullable
    public Xception getErr1() {
      return this.err1;
    }

    public testMultiException_result setErr1(@org.apache.thrift.annotation.Nullable Xception err1) {
      this.err1 = err1;
      return this;
    }

    public void unsetErr1() {
      this.err1 = null;
    }

    /** Returns true if field err1 is set (has been assigned a value) and false otherwise */
    public boolean isSetErr1() {
      return this.err1 != null;
    }

    public void setErr1IsSet(boolean value) {
      if (!value) {
        this.err1 = null;
      }
    }

    @org.apache.thrift.annotation.Nullable
    public Xception2 getErr2() {
      return this.err2;
    }

    public testMultiException_result setErr2(@org.apache.thrift.annotation.Nullable Xception2 err2) {
      this.err2 = err2;
      return this;
    }

    public void unsetErr2() {
      this.err2 = null;
    }

    /** Returns true if field err2 is set (has been assigned a value) and false otherwise */
    public boolean isSetErr2() {
      return this.err2 != null;
    }

    public void setErr2IsSet(boolean value) {
      if (!value) {
        this.err2 = null;
      }
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case SUCCESS:
        if (value == null) {
          unsetSuccess();
        } else {
          setSuccess((Xtruct)value);
        }
        break;

      case ERR1:
        if (value == null) {
          unsetErr1();
        } else {
          setErr1((Xception)value);
        }
        break;

      case ERR2:
        if (value == null) {
          unsetErr2();
        } else {
          setErr2((Xception2)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case SUCCESS:
        return getSuccess();

      case ERR1:
        return getErr1();

      case ERR2:
        return getErr2();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case SUCCESS:
        return isSetSuccess();
      case ERR1:
        return isSetErr1();
      case ERR2:
        return isSetErr2();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testMultiException_result)
        return this.equals((testMultiException_result)that);
      return false;
    }

    public boolean equals(testMultiException_result that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_success = true && this.isSetSuccess();
      boolean that_present_success = true && that.isSetSuccess();
      if (this_present_success || that_present_success) {
        if (!(this_present_success && that_present_success))
          return false;
        if (!this.success.equals(that.success))
          return false;
      }

      boolean this_present_err1 = true && this.isSetErr1();
      boolean that_present_err1 = true && that.isSetErr1();
      if (this_present_err1 || that_present_err1) {
        if (!(this_present_err1 && that_present_err1))
          return false;
        if (!this.err1.equals(that.err1))
          return false;
      }

      boolean this_present_err2 = true && this.isSetErr2();
      boolean that_present_err2 = true && that.isSetErr2();
      if (this_present_err2 || that_present_err2) {
        if (!(this_present_err2 && that_present_err2))
          return false;
        if (!this.err2.equals(that.err2))
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
      if (isSetSuccess())
        hashCode = hashCode * 8191 + success.hashCode();

      hashCode = hashCode * 8191 + ((isSetErr1()) ? 131071 : 524287);
      if (isSetErr1())
        hashCode = hashCode * 8191 + err1.hashCode();

      hashCode = hashCode * 8191 + ((isSetErr2()) ? 131071 : 524287);
      if (isSetErr2())
        hashCode = hashCode * 8191 + err2.hashCode();

      return hashCode;
    }

    @Override
    public int compareTo(testMultiException_result other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetSuccess(), other.isSetSuccess());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetSuccess()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      lastComparison = java.lang.Boolean.compare(isSetErr1(), other.isSetErr1());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetErr1()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.err1, other.err1);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      lastComparison = java.lang.Boolean.compare(isSetErr2(), other.isSetErr2());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetErr2()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.err2, other.err2);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
      }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testMultiException_result(");
      boolean first = true;

      sb.append("success:");
      if (this.success == null) {
        sb.append("null");
      } else {
        sb.append(this.success);
      }
      first = false;
      if (!first) sb.append(", ");
      sb.append("err1:");
      if (this.err1 == null) {
        sb.append("null");
      } else {
        sb.append(this.err1);
      }
      first = false;
      if (!first) sb.append(", ");
      sb.append("err2:");
      if (this.err2 == null) {
        sb.append("null");
      } else {
        sb.append(this.err2);
      }
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
      if (success != null) {
        success.validate();
      }
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testMultiException_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testMultiException_resultStandardScheme getScheme() {
        return new testMultiException_resultStandardScheme();
      }
    }

    private static class testMultiException_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<testMultiException_result> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testMultiException_result 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 0: // SUCCESS
              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                struct.success = new Xtruct();
                struct.success.read(iprot);
                struct.setSuccessIsSet(true);
              } else { 
                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
              }
              break;
            case 1: // ERR1
              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                struct.err1 = new Xception();
                struct.err1.read(iprot);
                struct.setErr1IsSet(true);
              } else { 
                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
              }
              break;
            case 2: // ERR2
              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                struct.err2 = new Xception2();
                struct.err2.read(iprot);
                struct.setErr2IsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testMultiException_result struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        if (struct.success != null) {
          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
          struct.success.write(oprot);
          oprot.writeFieldEnd();
        }
        if (struct.err1 != null) {
          oprot.writeFieldBegin(ERR1_FIELD_DESC);
          struct.err1.write(oprot);
          oprot.writeFieldEnd();
        }
        if (struct.err2 != null) {
          oprot.writeFieldBegin(ERR2_FIELD_DESC);
          struct.err2.write(oprot);
          oprot.writeFieldEnd();
        }
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testMultiException_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testMultiException_resultTupleScheme getScheme() {
        return new testMultiException_resultTupleScheme();
      }
    }

    private static class testMultiException_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<testMultiException_result> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testMultiException_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetSuccess()) {
          optionals.set(0);
        }
        if (struct.isSetErr1()) {
          optionals.set(1);
        }
        if (struct.isSetErr2()) {
          optionals.set(2);
        }
        oprot.writeBitSet(optionals, 3);
        if (struct.isSetSuccess()) {
          struct.success.write(oprot);
        }
        if (struct.isSetErr1()) {
          struct.err1.write(oprot);
        }
        if (struct.isSetErr2()) {
          struct.err2.write(oprot);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testMultiException_result struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(3);
        if (incoming.get(0)) {
          struct.success = new Xtruct();
          struct.success.read(iprot);
          struct.setSuccessIsSet(true);
        }
        if (incoming.get(1)) {
          struct.err1 = new Xception();
          struct.err1.read(iprot);
          struct.setErr1IsSet(true);
        }
        if (incoming.get(2)) {
          struct.err2 = new Xception2();
          struct.err2.read(iprot);
          struct.setErr2IsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

  public static class testOneway_args implements org.apache.thrift.TBase<testOneway_args, testOneway_args._Fields>, java.io.Serializable, Cloneable, Comparable<testOneway_args>   {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("testOneway_args");

    private static final org.apache.thrift.protocol.TField SECONDS_TO_SLEEP_FIELD_DESC = new org.apache.thrift.protocol.TField("secondsToSleep", org.apache.thrift.protocol.TType.I32, (short)1);

    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new testOneway_argsStandardSchemeFactory();
    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new testOneway_argsTupleSchemeFactory();

    public int secondsToSleep; // required

    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
      SECONDS_TO_SLEEP((short)1, "secondsToSleep");

      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

      static {
        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
          byName.put(field.getFieldName(), field);
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByThriftId(int fieldId) {
        switch(fieldId) {
          case 1: // SECONDS_TO_SLEEP
            return SECONDS_TO_SLEEP;
          default:
            return null;
        }
      }

      /**
       * Find the _Fields constant that matches fieldId, throwing an exception
       * if it is not found.
       */
      public static _Fields findByThriftIdOrThrow(int fieldId) {
        _Fields fields = findByThriftId(fieldId);
        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
        return fields;
      }

      /**
       * Find the _Fields constant that matches name, or null if its not found.
       */
      @org.apache.thrift.annotation.Nullable
      public static _Fields findByName(java.lang.String name) {
        return byName.get(name);
      }

      private final short _thriftId;
      private final java.lang.String _fieldName;

      _Fields(short thriftId, java.lang.String fieldName) {
        _thriftId = thriftId;
        _fieldName = fieldName;
      }

      public short getThriftFieldId() {
        return _thriftId;
      }

      public java.lang.String getFieldName() {
        return _fieldName;
      }
    }

    // isset id assignments
    private static final int __SECONDSTOSLEEP_ISSET_ID = 0;
    private byte __isset_bitfield = 0;
    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
    static {
      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
      tmpMap.put(_Fields.SECONDS_TO_SLEEP, new org.apache.thrift.meta_data.FieldMetaData("secondsToSleep", org.apache.thrift.TFieldRequirementType.DEFAULT, 
          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(testOneway_args.class, metaDataMap);
    }

    public testOneway_args() {
    }

    public testOneway_args(
      int secondsToSleep)
    {
      this();
      this.secondsToSleep = secondsToSleep;
      setSecondsToSleepIsSet(true);
    }

    /**
     * Performs a deep copy on <i>other</i>.
     */
    public testOneway_args(testOneway_args other) {
      __isset_bitfield = other.__isset_bitfield;
      this.secondsToSleep = other.secondsToSleep;
    }

    public testOneway_args deepCopy() {
      return new testOneway_args(this);
    }

    @Override
    public void clear() {
      setSecondsToSleepIsSet(false);
      this.secondsToSleep = 0;
    }

    public int getSecondsToSleep() {
      return this.secondsToSleep;
    }

    public testOneway_args setSecondsToSleep(int secondsToSleep) {
      this.secondsToSleep = secondsToSleep;
      setSecondsToSleepIsSet(true);
      return this;
    }

    public void unsetSecondsToSleep() {
      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __SECONDSTOSLEEP_ISSET_ID);
    }

    /** Returns true if field secondsToSleep is set (has been assigned a value) and false otherwise */
    public boolean isSetSecondsToSleep() {
      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __SECONDSTOSLEEP_ISSET_ID);
    }

    public void setSecondsToSleepIsSet(boolean value) {
      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __SECONDSTOSLEEP_ISSET_ID, value);
    }

    public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
      switch (field) {
      case SECONDS_TO_SLEEP:
        if (value == null) {
          unsetSecondsToSleep();
        } else {
          setSecondsToSleep((java.lang.Integer)value);
        }
        break;

      }
    }

    @org.apache.thrift.annotation.Nullable
    public java.lang.Object getFieldValue(_Fields field) {
      switch (field) {
      case SECONDS_TO_SLEEP:
        return getSecondsToSleep();

      }
      throw new java.lang.IllegalStateException();
    }

    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    public boolean isSet(_Fields field) {
      if (field == null) {
        throw new java.lang.IllegalArgumentException();
      }

      switch (field) {
      case SECONDS_TO_SLEEP:
        return isSetSecondsToSleep();
      }
      throw new java.lang.IllegalStateException();
    }

    @Override
    public boolean equals(java.lang.Object that) {
      if (that instanceof testOneway_args)
        return this.equals((testOneway_args)that);
      return false;
    }

    public boolean equals(testOneway_args that) {
      if (that == null)
        return false;
      if (this == that)
        return true;

      boolean this_present_secondsToSleep = true;
      boolean that_present_secondsToSleep = true;
      if (this_present_secondsToSleep || that_present_secondsToSleep) {
        if (!(this_present_secondsToSleep && that_present_secondsToSleep))
          return false;
        if (this.secondsToSleep != that.secondsToSleep)
          return false;
      }

      return true;
    }

    @Override
    public int hashCode() {
      int hashCode = 1;

      hashCode = hashCode * 8191 + secondsToSleep;

      return hashCode;
    }

    @Override
    public int compareTo(testOneway_args other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
      }

      int lastComparison = 0;

      lastComparison = java.lang.Boolean.compare(isSetSecondsToSleep(), other.isSetSecondsToSleep());
      if (lastComparison != 0) {
        return lastComparison;
      }
      if (isSetSecondsToSleep()) {
        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.secondsToSleep, other.secondsToSleep);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
      return 0;
    }

    @org.apache.thrift.annotation.Nullable
    public _Fields fieldForId(int fieldId) {
      return _Fields.findByThriftId(fieldId);
    }

    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
      scheme(iprot).read(iprot, this);
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
      scheme(oprot).write(oprot, this);
    }

    @Override
    public java.lang.String toString() {
      java.lang.StringBuilder sb = new java.lang.StringBuilder("testOneway_args(");
      boolean first = true;

      sb.append("secondsToSleep:");
      sb.append(this.secondsToSleep);
      first = false;
      sb.append(")");
      return sb.toString();
    }

    public void validate() throws org.apache.thrift.TException {
      // check for required fields
      // check for sub-struct validity
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      try {
        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
      try {
        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
        __isset_bitfield = 0;
        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
      } catch (org.apache.thrift.TException te) {
        throw new java.io.IOException(te);
      }
    }

    private static class testOneway_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testOneway_argsStandardScheme getScheme() {
        return new testOneway_argsStandardScheme();
      }
    }

    private static class testOneway_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<testOneway_args> {

      public void read(org.apache.thrift.protocol.TProtocol iprot, testOneway_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: // SECONDS_TO_SLEEP
              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
                struct.secondsToSleep = iprot.readI32();
                struct.setSecondsToSleepIsSet(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();
      }

      public void write(org.apache.thrift.protocol.TProtocol oprot, testOneway_args struct) throws org.apache.thrift.TException {
        struct.validate();

        oprot.writeStructBegin(STRUCT_DESC);
        oprot.writeFieldBegin(SECONDS_TO_SLEEP_FIELD_DESC);
        oprot.writeI32(struct.secondsToSleep);
        oprot.writeFieldEnd();
        oprot.writeFieldStop();
        oprot.writeStructEnd();
      }

    }

    private static class testOneway_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
      public testOneway_argsTupleScheme getScheme() {
        return new testOneway_argsTupleScheme();
      }
    }

    private static class testOneway_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<testOneway_args> {

      @Override
      public void write(org.apache.thrift.protocol.TProtocol prot, testOneway_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet optionals = new java.util.BitSet();
        if (struct.isSetSecondsToSleep()) {
          optionals.set(0);
        }
        oprot.writeBitSet(optionals, 1);
        if (struct.isSetSecondsToSleep()) {
          oprot.writeI32(struct.secondsToSleep);
        }
      }

      @Override
      public void read(org.apache.thrift.protocol.TProtocol prot, testOneway_args struct) throws org.apache.thrift.TException {
        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
        java.util.BitSet incoming = iprot.readBitSet(1);
        if (incoming.get(0)) {
          struct.secondsToSleep = iprot.readI32();
          struct.setSecondsToSleepIsSet(true);
        }
      }
    }

    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
    }
  }

}
