content: /**
   * Autogenerated by Thrift Compiler (0.9.2)
   *
   * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
   *  @generated
   */
  package edu.berkeley.cs.amplab.carat.thrift;
  
  import android.annotation.SuppressLint;
  import java.util.ArrayList;
  import java.util.BitSet;
  import java.util.Collections;
  import java.util.EnumMap;
  import java.util.EnumSet;
  import java.util.HashMap;
  import java.util.List;
  import java.util.Map;
  import javax.annotation.Generated;
  import org.apache.thrift.EncodingUtils;
  import org.apache.thrift.TException;
  import org.apache.thrift.async.AsyncMethodCallback;
  import org.apache.thrift.protocol.TTupleProtocol;
  import org.apache.thrift.scheme.IScheme;
  import org.apache.thrift.scheme.SchemeFactory;
  import org.apache.thrift.scheme.StandardScheme;
  import org.apache.thrift.scheme.TupleScheme;
  import org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  
  @SuppressLint("NewApi")
  @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
  @Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2014-12-19")
  public class CaratService {
  
    public interface Iface {
  
      public void registerMe(Registration registration) throws org.apache.thrift.TException;
  
      public boolean uploadSample(Sample sample) throws org.apache.thrift.TException;
  
      public Reports getReports(String uuId, List<Feature> features) throws org.apache.thrift.TException;
  
      public HogBugReport getHogOrBugReport(String uuId, List<Feature> features) throws org.apache.thrift.TException;
  
      public HogBugReport getQuickHogsAndMaybeRegister(Registration registration, List<String> processList) throws org.apache.thrift.TException;
  
    }
  
    public interface AsyncIface {
  
      public void registerMe(Registration registration, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
  
      public void uploadSample(Sample sample, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
  
      public void getReports(String uuId, List<Feature> features, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
  
      public void getHogOrBugReport(String uuId, List<Feature> features, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
  
      public void getQuickHogsAndMaybeRegister(Registration registration, List<String> processList, org.apache.thrift.async.AsyncMethodCallback 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 registerMe(Registration registration) throws org.apache.thrift.TException
      {
        send_registerMe(registration);
      }
  
      public void send_registerMe(Registration registration) throws org.apache.thrift.TException
      {
        registerMe_args args = new registerMe_args();
        args.setRegistration(registration);
        sendBase("registerMe", args);
      }
  
      public boolean uploadSample(Sample sample) throws org.apache.thrift.TException
      {
        send_uploadSample(sample);
        return recv_uploadSample();
      }
  
      public void send_uploadSample(Sample sample) throws org.apache.thrift.TException
      {
        uploadSample_args args = new uploadSample_args();
        args.setSample(sample);
        sendBase("uploadSample", args);
      }
  
      public boolean recv_uploadSample() throws org.apache.thrift.TException
      {
        uploadSample_result result = new uploadSample_result();
        receiveBase(result, "uploadSample");
        if (result.isSetSuccess()) {
          return result.success;
        }
        throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "uploadSample failed: unknown result");
      }
  
      public Reports getReports(String uuId, List<Feature> features) throws org.apache.thrift.TException
      {
        send_getReports(uuId, features);
        return recv_getReports();
      }
  
      public void send_getReports(String uuId, List<Feature> features) throws org.apache.thrift.TException
      {
        getReports_args args = new getReports_args();
        args.setUuId(uuId);
        args.setFeatures(features);
        sendBase("getReports", args);
      }
  
      public Reports recv_getReports() throws org.apache.thrift.TException
      {
        getReports_result result = new getReports_result();
        receiveBase(result, "getReports");
        if (result.isSetSuccess()) {
          return result.success;
        }
        throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getReports failed: unknown result");
      }
  
      public HogBugReport getHogOrBugReport(String uuId, List<Feature> features) throws org.apache.thrift.TException
      {
        send_getHogOrBugReport(uuId, features);
        return recv_getHogOrBugReport();
      }
  
      public void send_getHogOrBugReport(String uuId, List<Feature> features) throws org.apache.thrift.TException
      {
        getHogOrBugReport_args args = new getHogOrBugReport_args();
        args.setUuId(uuId);
        args.setFeatures(features);
        sendBase("getHogOrBugReport", args);
      }
  
      public HogBugReport recv_getHogOrBugReport() throws org.apache.thrift.TException
      {
        getHogOrBugReport_result result = new getHogOrBugReport_result();
        receiveBase(result, "getHogOrBugReport");
        if (result.isSetSuccess()) {
          return result.success;
        }
        throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getHogOrBugReport failed: unknown result");
      }
  
      public HogBugReport getQuickHogsAndMaybeRegister(Registration registration, List<String> processList) throws org.apache.thrift.TException
      {
        send_getQuickHogsAndMaybeRegister(registration, processList);
        return recv_getQuickHogsAndMaybeRegister();
      }
  
      public void send_getQuickHogsAndMaybeRegister(Registration registration, List<String> processList) throws org.apache.thrift.TException
      {
        getQuickHogsAndMaybeRegister_args args = new getQuickHogsAndMaybeRegister_args();
        args.setRegistration(registration);
        args.setProcessList(processList);
        sendBase("getQuickHogsAndMaybeRegister", args);
      }
  
      public HogBugReport recv_getQuickHogsAndMaybeRegister() throws org.apache.thrift.TException
      {
        getQuickHogsAndMaybeRegister_result result = new getQuickHogsAndMaybeRegister_result();
        receiveBase(result, "getQuickHogsAndMaybeRegister");
        if (result.isSetSuccess()) {
          return result.success;
        }
        throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getQuickHogsAndMaybeRegister failed: unknown result");
      }
  
    }
    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 registerMe(Registration registration, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
        checkReady();
        registerMe_call method_call = new registerMe_call(registration, resultHandler, this, ___protocolFactory, ___transport);
        this.___currentMethod = method_call;
        ___manager.call(method_call);
      }
  
      public static class registerMe_call extends org.apache.thrift.async.TAsyncMethodCall {
        private Registration registration;
        public registerMe_call(Registration registration, org.apache.thrift.async.AsyncMethodCallback 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.registration = registration;
        }
  
        public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
          prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("registerMe", org.apache.thrift.protocol.TMessageType.ONEWAY, 0));
          registerMe_args args = new registerMe_args();
          args.setRegistration(registration);
          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 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);
        }
      }
  
      public void uploadSample(Sample sample, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
        checkReady();
        uploadSample_call method_call = new uploadSample_call(sample, resultHandler, this, ___protocolFactory, ___transport);
        this.___currentMethod = method_call;
        ___manager.call(method_call);
      }
  
      public static class uploadSample_call extends org.apache.thrift.async.TAsyncMethodCall {
        private Sample sample;
        public uploadSample_call(Sample sample, org.apache.thrift.async.AsyncMethodCallback 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.sample = sample;
        }
  
        public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
          prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("uploadSample", org.apache.thrift.protocol.TMessageType.CALL, 0));
          uploadSample_args args = new uploadSample_args();
          args.setSample(sample);
          args.write(prot);
          prot.writeMessageEnd();
        }
  
        public boolean getResult() throws org.apache.thrift.TException {
          if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
            throw new 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_uploadSample();
        }
      }
  
      public void getReports(String uuId, List<Feature> features, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
        checkReady();
        getReports_call method_call = new getReports_call(uuId, features, resultHandler, this, ___protocolFactory, ___transport);
        this.___currentMethod = method_call;
        ___manager.call(method_call);
      }
  
      public static class getReports_call extends org.apache.thrift.async.TAsyncMethodCall {
        private String uuId;
        private List<Feature> features;
        public getReports_call(String uuId, List<Feature> features, org.apache.thrift.async.AsyncMethodCallback 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.uuId = uuId;
          this.features = features;
        }
  
        public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
          prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getReports", org.apache.thrift.protocol.TMessageType.CALL, 0));
          getReports_args args = new getReports_args();
          args.setUuId(uuId);
          args.setFeatures(features);
          args.write(prot);
          prot.writeMessageEnd();
        }
  
        public Reports getResult() throws org.apache.thrift.TException {
          if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
            throw new 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_getReports();
        }
      }
  
      public void getHogOrBugReport(String uuId, List<Feature> features, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
        checkReady();
        getHogOrBugReport_call method_call = new getHogOrBugReport_call(uuId, features, resultHandler, this, ___protocolFactory, ___transport);
        this.___currentMethod = method_call;
        ___manager.call(method_call);
      }
  
      public static class getHogOrBugReport_call extends org.apache.thrift.async.TAsyncMethodCall {
        private String uuId;
        private List<Feature> features;
        public getHogOrBugReport_call(String uuId, List<Feature> features, org.apache.thrift.async.AsyncMethodCallback 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.uuId = uuId;
          this.features = features;
        }
  
        public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
          prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getHogOrBugReport", org.apache.thrift.protocol.TMessageType.CALL, 0));
          getHogOrBugReport_args args = new getHogOrBugReport_args();
          args.setUuId(uuId);
          args.setFeatures(features);
          args.write(prot);
          prot.writeMessageEnd();
        }
  
        public HogBugReport getResult() throws org.apache.thrift.TException {
          if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
            throw new 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_getHogOrBugReport();
        }
      }
  
      public void getQuickHogsAndMaybeRegister(Registration registration, List<String> processList, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
        checkReady();
        getQuickHogsAndMaybeRegister_call method_call = new getQuickHogsAndMaybeRegister_call(registration, processList, resultHandler, this, ___protocolFactory, ___transport);
        this.___currentMethod = method_call;
        ___manager.call(method_call);
      }
  
      public static class getQuickHogsAndMaybeRegister_call extends org.apache.thrift.async.TAsyncMethodCall {
        private Registration registration;
        private List<String> processList;
        public getQuickHogsAndMaybeRegister_call(Registration registration, List<String> processList, org.apache.thrift.async.AsyncMethodCallback 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.registration = registration;
          this.processList = processList;
        }
  
        public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
          prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getQuickHogsAndMaybeRegister", org.apache.thrift.protocol.TMessageType.CALL, 0));
          getQuickHogsAndMaybeRegister_args args = new getQuickHogsAndMaybeRegister_args();
          args.setRegistration(registration);
          args.setProcessList(processList);
          args.write(prot);
          prot.writeMessageEnd();
        }
  
        public HogBugReport getResult() throws org.apache.thrift.TException {
          if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
            throw new 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_getQuickHogsAndMaybeRegister();
        }
      }
  
    }
  
    public static class Processor<I extends Iface> extends org.apache.thrift.TBaseProcessor<I> implements org.apache.thrift.TProcessor {
      private static final Logger LOGGER = LoggerFactory.getLogger(Processor.class.getName());
      public Processor(I iface) {
        super(iface, getProcessMap(new HashMap<String, org.apache.thrift.ProcessFunction<I, ? extends org.apache.thrift.TBase>>()));
      }
  
      protected Processor(I iface, Map<String,  org.apache.thrift.ProcessFunction<I, ? extends  org.apache.thrift.TBase>> processMap) {
        super(iface, getProcessMap(processMap));
      }
  
      private static <I extends Iface> Map<String,  org.apache.thrift.ProcessFunction<I, ? extends  org.apache.thrift.TBase>> getProcessMap(Map<String,  org.apache.thrift.ProcessFunction<I, ? extends  org.apache.thrift.TBase>> processMap) {
        processMap.put("registerMe", new registerMe());
        processMap.put("uploadSample", new uploadSample());
        processMap.put("getReports", new getReports());
        processMap.put("getHogOrBugReport", new getHogOrBugReport());
        processMap.put("getQuickHogsAndMaybeRegister", new getQuickHogsAndMaybeRegister());
        return processMap;
      }
  
      public static class registerMe<I extends Iface> extends org.apache.thrift.ProcessFunction<I, registerMe_args> {
        public registerMe() {
          super("registerMe");
        }
  
        public registerMe_args getEmptyArgsInstance() {
          return new registerMe_args();
        }
  
        protected boolean isOneway() {
          return true;
        }
  
        public org.apache.thrift.TBase getResult(I iface, registerMe_args args) throws org.apache.thrift.TException {
          iface.registerMe(args.registration);
          return null;
        }
      }
  
      public static class uploadSample<I extends Iface> extends org.apache.thrift.ProcessFunction<I, uploadSample_args> {
        public uploadSample() {
          super("uploadSample");
        }
  
        public uploadSample_args getEmptyArgsInstance() {
          return new uploadSample_args();
        }
  
        protected boolean isOneway() {
          return false;
        }
  
        public uploadSample_result getResult(I iface, uploadSample_args args) throws org.apache.thrift.TException {
          uploadSample_result result = new uploadSample_result();
          result.success = iface.uploadSample(args.sample);
          result.setSuccessIsSet(true);
          return result;
        }
      }
  
      public static class getReports<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getReports_args> {
        public getReports() {
          super("getReports");
        }
  
        public getReports_args getEmptyArgsInstance() {
          return new getReports_args();
        }
  
        protected boolean isOneway() {
          return false;
        }
  
        public getReports_result getResult(I iface, getReports_args args) throws org.apache.thrift.TException {
          getReports_result result = new getReports_result();
          result.success = iface.getReports(args.uuId, args.features);
          return result;
        }
      }
  
      public static class getHogOrBugReport<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getHogOrBugReport_args> {
        public getHogOrBugReport() {
          super("getHogOrBugReport");
        }
  
        public getHogOrBugReport_args getEmptyArgsInstance() {
          return new getHogOrBugReport_args();
        }
  
        protected boolean isOneway() {
          return false;
        }
  
        public getHogOrBugReport_result getResult(I iface, getHogOrBugReport_args args) throws org.apache.thrift.TException {
          getHogOrBugReport_result result = new getHogOrBugReport_result();
          result.success = iface.getHogOrBugReport(args.uuId, args.features);
          return result;
        }
      }
  
      public static class getQuickHogsAndMaybeRegister<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getQuickHogsAndMaybeRegister_args> {
        public getQuickHogsAndMaybeRegister() {
          super("getQuickHogsAndMaybeRegister");
        }
  
        public getQuickHogsAndMaybeRegister_args getEmptyArgsInstance() {
          return new getQuickHogsAndMaybeRegister_args();
        }
  
        protected boolean isOneway() {
          return false;
        }
  
        public getQuickHogsAndMaybeRegister_result getResult(I iface, getQuickHogsAndMaybeRegister_args args) throws org.apache.thrift.TException {
          getQuickHogsAndMaybeRegister_result result = new getQuickHogsAndMaybeRegister_result();
          result.success = iface.getQuickHogsAndMaybeRegister(args.registration, args.processList);
          return result;
        }
      }
  
    }
  
    public static class AsyncProcessor<I extends AsyncIface> extends org.apache.thrift.TBaseAsyncProcessor<I> {
      private static final Logger LOGGER = LoggerFactory.getLogger(AsyncProcessor.class.getName());
      public AsyncProcessor(I iface) {
        super(iface, getProcessMap(new HashMap<String, org.apache.thrift.AsyncProcessFunction<I, ? extends org.apache.thrift.TBase, ?>>()));
      }
  
      protected AsyncProcessor(I iface, Map<String,  org.apache.thrift.AsyncProcessFunction<I, ? extends  org.apache.thrift.TBase, ?>> processMap) {
        super(iface, getProcessMap(processMap));
      }
  
      private static <I extends AsyncIface> Map<String,  org.apache.thrift.AsyncProcessFunction<I, ? extends  org.apache.thrift.TBase,?>> getProcessMap(Map<String,  org.apache.thrift.AsyncProcessFunction<I, ? extends  org.apache.thrift.TBase, ?>> processMap) {
        processMap.put("registerMe", new registerMe());
        processMap.put("uploadSample", new uploadSample());
        processMap.put("getReports", new getReports());
        processMap.put("getHogOrBugReport", new getHogOrBugReport());
        processMap.put("getQuickHogsAndMaybeRegister", new getQuickHogsAndMaybeRegister());
        return processMap;
      }
  
      public static class registerMe<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, registerMe_args, Void> {
        public registerMe() {
          super("registerMe");
        }
  
        public registerMe_args getEmptyArgsInstance() {
          return new registerMe_args();
        }
  
        public AsyncMethodCallback<Void> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
          final org.apache.thrift.AsyncProcessFunction fcall = this;
          return new AsyncMethodCallback<Void>() { 
            public void onComplete(Void o) {
            }
            public void onError(Exception e) {
            }
          };
        }
  
        protected boolean isOneway() {
          return true;
        }
  
        public void start(I iface, registerMe_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws TException {
          iface.registerMe(args.registration,resultHandler);
        }
      }
  
      public static class uploadSample<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, uploadSample_args, Boolean> {
        public uploadSample() {
          super("uploadSample");
        }
  
        public uploadSample_args getEmptyArgsInstance() {
          return new uploadSample_args();
        }
  
        public AsyncMethodCallback<Boolean> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
          final org.apache.thrift.AsyncProcessFunction fcall = this;
          return new AsyncMethodCallback<Boolean>() { 
            public void onComplete(Boolean o) {
              uploadSample_result result = new uploadSample_result();
              result.success = o;
              result.setSuccessIsSet(true);
              try {
                fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
                return;
              } catch (Exception e) {
                LOGGER.error("Exception writing to internal frame buffer", e);
              }
              fb.close();
            }
            public void onError(Exception e) {
              byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
              org.apache.thrift.TBase msg;
              uploadSample_result result = new uploadSample_result();
              {
                msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
              }
              try {
                fcall.sendResponse(fb,msg,msgType,seqid);
                return;
              } catch (Exception ex) {
                LOGGER.error("Exception writing to internal frame buffer", ex);
              }
              fb.close();
            }
          };
        }
  
        protected boolean isOneway() {
          return false;
        }
  
        public void start(I iface, uploadSample_args args, org.apache.thrift.async.AsyncMethodCallback<Boolean> resultHandler) throws TException {
          iface.uploadSample(args.sample,resultHandler);
        }
      }
  
      public static class getReports<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getReports_args, Reports> {
        public getReports() {
          super("getReports");
        }
  
        public getReports_args getEmptyArgsInstance() {
          return new getReports_args();
        }
  
        public AsyncMethodCallback<Reports> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
          final org.apache.thrift.AsyncProcessFunction fcall = this;
          return new AsyncMethodCallback<Reports>() { 
            public void onComplete(Reports o) {
              getReports_result result = new getReports_result();
              result.success = o;
              try {
                fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
                return;
              } catch (Exception e) {
                LOGGER.error("Exception writing to internal frame buffer", e);
              }
              fb.close();
            }
            public void onError(Exception e) {
              byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
              org.apache.thrift.TBase msg;
              getReports_result result = new getReports_result();
              {
                msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
              }
              try {
                fcall.sendResponse(fb,msg,msgType,seqid);
                return;
              } catch (Exception ex) {
                LOGGER.error("Exception writing to internal frame buffer", ex);
              }
              fb.close();
            }
          };
        }
  
        protected boolean isOneway() {
          return false;
        }
  
        public void start(I iface, getReports_args args, org.apache.thrift.async.AsyncMethodCallback<Reports> resultHandler) throws TException {
          iface.getReports(args.uuId, args.features,resultHandler);
        }
      }
  
      public static class getHogOrBugReport<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getHogOrBugReport_args, HogBugReport> {
        public getHogOrBugReport() {
          super("getHogOrBugReport");
        }
  
        public getHogOrBugReport_args getEmptyArgsInstance() {
          return new getHogOrBugReport_args();
        }
  
        public AsyncMethodCallback<HogBugReport> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
          final org.apache.thrift.AsyncProcessFunction fcall = this;
          return new AsyncMethodCallback<HogBugReport>() { 
            public void onComplete(HogBugReport o) {
              getHogOrBugReport_result result = new getHogOrBugReport_result();
              result.success = o;
              try {
                fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
                return;
              } catch (Exception e) {
                LOGGER.error("Exception writing to internal frame buffer", e);
              }
              fb.close();
            }
            public void onError(Exception e) {
              byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
              org.apache.thrift.TBase msg;
              getHogOrBugReport_result result = new getHogOrBugReport_result();
              {
                msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
              }
              try {
                fcall.sendResponse(fb,msg,msgType,seqid);
                return;
              } catch (Exception ex) {
                LOGGER.error("Exception writing to internal frame buffer", ex);
              }
              fb.close();
            }
          };
        }
  
        protected boolean isOneway() {
          return false;
        }
  
        public void start(I iface, getHogOrBugReport_args args, org.apache.thrift.async.AsyncMethodCallback<HogBugReport> resultHandler) throws TException {
          iface.getHogOrBugReport(args.uuId, args.features,resultHandler);
        }
      }
  
      public static class getQuickHogsAndMaybeRegister<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getQuickHogsAndMaybeRegister_args, HogBugReport> {
        public getQuickHogsAndMaybeRegister() {
          super("getQuickHogsAndMaybeRegister");
        }
  
        public getQuickHogsAndMaybeRegister_args getEmptyArgsInstance() {
          return new getQuickHogsAndMaybeRegister_args();
        }
  
        public AsyncMethodCallback<HogBugReport> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
          final org.apache.thrift.AsyncProcessFunction fcall = this;
          return new AsyncMethodCallback<HogBugReport>() { 
            public void onComplete(HogBugReport o) {
              getQuickHogsAndMaybeRegister_result result = new getQuickHogsAndMaybeRegister_result();
              result.success = o;
              try {
                fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
                return;
              } catch (Exception e) {
                LOGGER.error("Exception writing to internal frame buffer", e);
              }
              fb.close();
            }
            public void onError(Exception e) {
              byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
              org.apache.thrift.TBase msg;
              getQuickHogsAndMaybeRegister_result result = new getQuickHogsAndMaybeRegister_result();
              {
                msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
              }
              try {
                fcall.sendResponse(fb,msg,msgType,seqid);
                return;
              } catch (Exception ex) {
                LOGGER.error("Exception writing to internal frame buffer", ex);
              }
              fb.close();
            }
          };
        }
  
        protected boolean isOneway() {
          return false;
        }
  
        public void start(I iface, getQuickHogsAndMaybeRegister_args args, org.apache.thrift.async.AsyncMethodCallback<HogBugReport> resultHandler) throws TException {
          iface.getQuickHogsAndMaybeRegister(args.registration, args.processList,resultHandler);
        }
      }
  
    }
  
    public static class registerMe_args implements org.apache.thrift.TBase<registerMe_args, registerMe_args._Fields>, java.io.Serializable, Cloneable, Comparable<registerMe_args>   {
      private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("registerMe_args");
  
      private static final org.apache.thrift.protocol.TField REGISTRATION_FIELD_DESC = new org.apache.thrift.protocol.TField("registration", org.apache.thrift.protocol.TType.STRUCT, (short)1);
  
      private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
      static {
        schemes.put(StandardScheme.class, new registerMe_argsStandardSchemeFactory());
        schemes.put(TupleScheme.class, new registerMe_argsTupleSchemeFactory());
      }
  
      public Registration registration; // 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 {
        REGISTRATION((short)1, "registration");
  
        private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
  
        static {
          for (_Fields field : EnumSet.allOf(_Fields.class)) {
            byName.put(field.getFieldName(), field);
          }
        }
  
        /**
         * Find the _Fields constant that matches fieldId, or null if its not found.
         */
        public static _Fields findByThriftId(int fieldId) {
          switch(fieldId) {
            case 1: // REGISTRATION
              return REGISTRATION;
            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 IllegalArgumentException("Field " + fieldId + " doesn't exist!");
          return fields;
        }
  
        /**
         * Find the _Fields constant that matches name, or null if its not found.
         */
        public static _Fields findByName(String name) {
          return byName.get(name);
        }
  
        private final short _thriftId;
        private final String _fieldName;
  
        _Fields(short thriftId, String fieldName) {
          _thriftId = thriftId;
          _fieldName = fieldName;
        }
  
        public short getThriftFieldId() {
          return _thriftId;
        }
  
        public String getFieldName() {
          return _fieldName;
        }
      }
  
      // isset id assignments
      public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
      static {
        Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
        tmpMap.put(_Fields.REGISTRATION, new org.apache.thrift.meta_data.FieldMetaData("registration", org.apache.thrift.TFieldRequirementType.DEFAULT, 
            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Registration.class)));
        metaDataMap = Collections.unmodifiableMap(tmpMap);
        org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(registerMe_args.class, metaDataMap);
      }
  
      public registerMe_args() {
      }
  
      public registerMe_args(
        Registration registration)
      {
        this();
        this.registration = registration;
      }
  
      /**
       * Performs a deep copy on <i>other</i>.
       */
      public registerMe_args(registerMe_args other) {
        if (other.isSetRegistration()) {
          this.registration = new Registration(other.registration);
        }
      }
  
      public registerMe_args deepCopy() {
        return new registerMe_args(this);
      }
  
      @Override
      public void clear() {
        this.registration = null;
      }
  
      public Registration getRegistration() {
        return this.registration;
      }
  
      public registerMe_args setRegistration(Registration registration) {
        this.registration = registration;
        return this;
      }
  
      public void unsetRegistration() {
        this.registration = null;
      }
  
      /** Returns true if field registration is set (has been assigned a value) and false otherwise */
      public boolean isSetRegistration() {
        return this.registration != null;
      }
  
      public void setRegistrationIsSet(boolean value) {
        if (!value) {
          this.registration = null;
        }
      }
  
      public void setFieldValue(_Fields field, Object value) {
        switch (field) {
        case REGISTRATION:
          if (value == null) {
            unsetRegistration();
          } else {
            setRegistration((Registration)value);
          }
          break;
  
        }
      }
  
      public Object getFieldValue(_Fields field) {
        switch (field) {
        case REGISTRATION:
          return getRegistration();
  
        }
        throw new 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 IllegalArgumentException();
        }
  
        switch (field) {
        case REGISTRATION:
          return isSetRegistration();
        }
        throw new IllegalStateException();
      }
  
      @Override
      public boolean equals(Object that) {
        if (that == null)
          return false;
        if (that instanceof registerMe_args)
          return this.equals((registerMe_args)that);
        return false;
      }
  
      public boolean equals(registerMe_args that) {
        if (that == null)
          return false;
  
        boolean this_present_registration = true && this.isSetRegistration();
        boolean that_present_registration = true && that.isSetRegistration();
        if (this_present_registration || that_present_registration) {
          if (!(this_present_registration && that_present_registration))
            return false;
          if (!this.registration.equals(that.registration))
            return false;
        }
  
        return true;
      }
  
      @Override
      public int hashCode() {
        List<Object> list = new ArrayList<Object>();
  
        boolean present_registration = true && (isSetRegistration());
        list.add(present_registration);
        if (present_registration)
          list.add(registration);
  
        return list.hashCode();
      }
  
      @Override
      public int compareTo(registerMe_args other) {
        if (!getClass().equals(other.getClass())) {
          return getClass().getName().compareTo(other.getClass().getName());
        }
  
        int lastComparison = 0;
  
        lastComparison = Boolean.valueOf(isSetRegistration()).compareTo(other.isSetRegistration());
        if (lastComparison != 0) {
          return lastComparison;
        }
        if (isSetRegistration()) {
          lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.registration, other.registration);
          if (lastComparison != 0) {
            return lastComparison;
          }
        }
        return 0;
      }
  
      public _Fields fieldForId(int fieldId) {
        return _Fields.findByThriftId(fieldId);
      }
  
      public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
        schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
      }
  
      public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
        schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
      }
  
      @Override
      public String toString() {
        StringBuilder sb = new StringBuilder("registerMe_args(");
        boolean first = true;
  
        sb.append("registration:");
        if (this.registration == null) {
          sb.append("null");
        } else {
          sb.append(this.registration);
        }
        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 (registration != null) {
          registration.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, 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 registerMe_argsStandardSchemeFactory implements SchemeFactory {
        public registerMe_argsStandardScheme getScheme() {
          return new registerMe_argsStandardScheme();
        }
      }
  
      private static class registerMe_argsStandardScheme extends StandardScheme<registerMe_args> {
  
        public void read(org.apache.thrift.protocol.TProtocol iprot, registerMe_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: // REGISTRATION
                if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                  struct.registration = new Registration();
                  struct.registration.read(iprot);
                  struct.setRegistrationIsSet(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, registerMe_args struct) throws org.apache.thrift.TException {
          struct.validate();
  
          oprot.writeStructBegin(STRUCT_DESC);
          if (struct.registration != null) {
            oprot.writeFieldBegin(REGISTRATION_FIELD_DESC);
            struct.registration.write(oprot);
            oprot.writeFieldEnd();
          }
          oprot.writeFieldStop();
          oprot.writeStructEnd();
        }
  
      }
  
      private static class registerMe_argsTupleSchemeFactory implements SchemeFactory {
        public registerMe_argsTupleScheme getScheme() {
          return new registerMe_argsTupleScheme();
        }
      }
  
      private static class registerMe_argsTupleScheme extends TupleScheme<registerMe_args> {
  
        @Override
        public void write(org.apache.thrift.protocol.TProtocol prot, registerMe_args struct) throws org.apache.thrift.TException {
          TTupleProtocol oprot = (TTupleProtocol) prot;
          BitSet optionals = new BitSet();
          if (struct.isSetRegistration()) {
            optionals.set(0);
          }
          oprot.writeBitSet(optionals, 1);
          if (struct.isSetRegistration()) {
            struct.registration.write(oprot);
          }
        }
  
        @Override
        public void read(org.apache.thrift.protocol.TProtocol prot, registerMe_args struct) throws org.apache.thrift.TException {
          TTupleProtocol iprot = (TTupleProtocol) prot;
          BitSet incoming = iprot.readBitSet(1);
          if (incoming.get(0)) {
            struct.registration = new Registration();
            struct.registration.read(iprot);
            struct.setRegistrationIsSet(true);
          }
        }
      }
  
    }
  
    public static class uploadSample_args implements org.apache.thrift.TBase<uploadSample_args, uploadSample_args._Fields>, java.io.Serializable, Cloneable, Comparable<uploadSample_args>   {
      private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("uploadSample_args");
  
      private static final org.apache.thrift.protocol.TField SAMPLE_FIELD_DESC = new org.apache.thrift.protocol.TField("sample", org.apache.thrift.protocol.TType.STRUCT, (short)1);
  
      private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
      static {
        schemes.put(StandardScheme.class, new uploadSample_argsStandardSchemeFactory());
        schemes.put(TupleScheme.class, new uploadSample_argsTupleSchemeFactory());
      }
  
      public Sample sample; // 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 {
        SAMPLE((short)1, "sample");
  
        private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
  
        static {
          for (_Fields field : EnumSet.allOf(_Fields.class)) {
            byName.put(field.getFieldName(), field);
          }
        }
  
        /**
         * Find the _Fields constant that matches fieldId, or null if its not found.
         */
        public static _Fields findByThriftId(int fieldId) {
          switch(fieldId) {
            case 1: // SAMPLE
              return SAMPLE;
            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 IllegalArgumentException("Field " + fieldId + " doesn't exist!");
          return fields;
        }
  
        /**
         * Find the _Fields constant that matches name, or null if its not found.
         */
        public static _Fields findByName(String name) {
          return byName.get(name);
        }
  
        private final short _thriftId;
        private final String _fieldName;
  
        _Fields(short thriftId, String fieldName) {
          _thriftId = thriftId;
          _fieldName = fieldName;
        }
  
        public short getThriftFieldId() {
          return _thriftId;
        }
  
        public String getFieldName() {
          return _fieldName;
        }
      }
  
      // isset id assignments
      public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
      static {
        Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
        tmpMap.put(_Fields.SAMPLE, new org.apache.thrift.meta_data.FieldMetaData("sample", org.apache.thrift.TFieldRequirementType.DEFAULT, 
            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Sample.class)));
        metaDataMap = Collections.unmodifiableMap(tmpMap);
        org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(uploadSample_args.class, metaDataMap);
      }
  
      public uploadSample_args() {
      }
  
      public uploadSample_args(
        Sample sample)
      {
        this();
        this.sample = sample;
      }
  
      /**
       * Performs a deep copy on <i>other</i>.
       */
      public uploadSample_args(uploadSample_args other) {
        if (other.isSetSample()) {
          this.sample = new Sample(other.sample);
        }
      }
  
      public uploadSample_args deepCopy() {
        return new uploadSample_args(this);
      }
  
      @Override
      public void clear() {
        this.sample = null;
      }
  
      public Sample getSample() {
        return this.sample;
      }
  
      public uploadSample_args setSample(Sample sample) {
        this.sample = sample;
        return this;
      }
  
      public void unsetSample() {
        this.sample = null;
      }
  
      /** Returns true if field sample is set (has been assigned a value) and false otherwise */
      public boolean isSetSample() {
        return this.sample != null;
      }
  
      public void setSampleIsSet(boolean value) {
        if (!value) {
          this.sample = null;
        }
      }
  
      public void setFieldValue(_Fields field, Object value) {
        switch (field) {
        case SAMPLE:
          if (value == null) {
            unsetSample();
          } else {
            setSample((Sample)value);
          }
          break;
  
        }
      }
  
      public Object getFieldValue(_Fields field) {
        switch (field) {
        case SAMPLE:
          return getSample();
  
        }
        throw new 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 IllegalArgumentException();
        }
  
        switch (field) {
        case SAMPLE:
          return isSetSample();
        }
        throw new IllegalStateException();
      }
  
      @Override
      public boolean equals(Object that) {
        if (that == null)
          return false;
        if (that instanceof uploadSample_args)
          return this.equals((uploadSample_args)that);
        return false;
      }
  
      public boolean equals(uploadSample_args that) {
        if (that == null)
          return false;
  
        boolean this_present_sample = true && this.isSetSample();
        boolean that_present_sample = true && that.isSetSample();
        if (this_present_sample || that_present_sample) {
          if (!(this_present_sample && that_present_sample))
            return false;
          if (!this.sample.equals(that.sample))
            return false;
        }
  
        return true;
      }
  
      @Override
      public int hashCode() {
        List<Object> list = new ArrayList<Object>();
  
        boolean present_sample = true && (isSetSample());
        list.add(present_sample);
        if (present_sample)
          list.add(sample);
  
        return list.hashCode();
      }
  
      @Override
      public int compareTo(uploadSample_args other) {
        if (!getClass().equals(other.getClass())) {
          return getClass().getName().compareTo(other.getClass().getName());
        }
  
        int lastComparison = 0;
  
        lastComparison = Boolean.valueOf(isSetSample()).compareTo(other.isSetSample());
        if (lastComparison != 0) {
          return lastComparison;
        }
        if (isSetSample()) {
          lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.sample, other.sample);
          if (lastComparison != 0) {
            return lastComparison;
          }
        }
        return 0;
      }
  
      public _Fields fieldForId(int fieldId) {
        return _Fields.findByThriftId(fieldId);
      }
  
      public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
        schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
      }
  
      public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
        schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
      }
  
      @Override
      public String toString() {
        StringBuilder sb = new StringBuilder("uploadSample_args(");
        boolean first = true;
  
        sb.append("sample:");
        if (this.sample == null) {
          sb.append("null");
        } else {
          sb.append(this.sample);
        }
        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 (sample != null) {
          sample.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, 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 uploadSample_argsStandardSchemeFactory implements SchemeFactory {
        public uploadSample_argsStandardScheme getScheme() {
          return new uploadSample_argsStandardScheme();
        }
      }
  
      private static class uploadSample_argsStandardScheme extends StandardScheme<uploadSample_args> {
  
        public void read(org.apache.thrift.protocol.TProtocol iprot, uploadSample_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: // SAMPLE
                if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                  struct.sample = new Sample();
                  struct.sample.read(iprot);
                  struct.setSampleIsSet(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, uploadSample_args struct) throws org.apache.thrift.TException {
          struct.validate();
  
          oprot.writeStructBegin(STRUCT_DESC);
          if (struct.sample != null) {
            oprot.writeFieldBegin(SAMPLE_FIELD_DESC);
            struct.sample.write(oprot);
            oprot.writeFieldEnd();
          }
          oprot.writeFieldStop();
          oprot.writeStructEnd();
        }
  
      }
  
      private static class uploadSample_argsTupleSchemeFactory implements SchemeFactory {
        public uploadSample_argsTupleScheme getScheme() {
          return new uploadSample_argsTupleScheme();
        }
      }
  
      private static class uploadSample_argsTupleScheme extends TupleScheme<uploadSample_args> {
  
        @Override
        public void write(org.apache.thrift.protocol.TProtocol prot, uploadSample_args struct) throws org.apache.thrift.TException {
          TTupleProtocol oprot = (TTupleProtocol) prot;
          BitSet optionals = new BitSet();
          if (struct.isSetSample()) {
            optionals.set(0);
          }
          oprot.writeBitSet(optionals, 1);
          if (struct.isSetSample()) {
            struct.sample.write(oprot);
          }
        }
  
        @Override
        public void read(org.apache.thrift.protocol.TProtocol prot, uploadSample_args struct) throws org.apache.thrift.TException {
          TTupleProtocol iprot = (TTupleProtocol) prot;
          BitSet incoming = iprot.readBitSet(1);
          if (incoming.get(0)) {
            struct.sample = new Sample();
            struct.sample.read(iprot);
            struct.setSampleIsSet(true);
          }
        }
      }
  
    }
  
    public static class uploadSample_result implements org.apache.thrift.TBase<uploadSample_result, uploadSample_result._Fields>, java.io.Serializable, Cloneable, Comparable<uploadSample_result>   {
      private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("uploadSample_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 Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
      static {
        schemes.put(StandardScheme.class, new uploadSample_resultStandardSchemeFactory());
        schemes.put(TupleScheme.class, new uploadSample_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 Map<String, _Fields> byName = new HashMap<String, _Fields>();
  
        static {
          for (_Fields field : EnumSet.allOf(_Fields.class)) {
            byName.put(field.getFieldName(), field);
          }
        }
  
        /**
         * Find the _Fields constant that matches fieldId, or null if its not found.
         */
        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 IllegalArgumentException("Field " + fieldId + " doesn't exist!");
          return fields;
        }
  
        /**
         * Find the _Fields constant that matches name, or null if its not found.
         */
        public static _Fields findByName(String name) {
          return byName.get(name);
        }
  
        private final short _thriftId;
        private final String _fieldName;
  
        _Fields(short thriftId, String fieldName) {
          _thriftId = thriftId;
          _fieldName = fieldName;
        }
  
        public short getThriftFieldId() {
          return _thriftId;
        }
  
        public String getFieldName() {
          return _fieldName;
        }
      }
  
      // isset id assignments
      private static final int __SUCCESS_ISSET_ID = 0;
      private byte __isset_bitfield = 0;
      public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
      static {
        Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new 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 = Collections.unmodifiableMap(tmpMap);
        org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(uploadSample_result.class, metaDataMap);
      }
  
      public uploadSample_result() {
      }
  
      public uploadSample_result(
        boolean success)
      {
        this();
        this.success = success;
        setSuccessIsSet(true);
      }
  
      /**
       * Performs a deep copy on <i>other</i>.
       */
      public uploadSample_result(uploadSample_result other) {
        __isset_bitfield = other.__isset_bitfield;
        this.success = other.success;
      }
  
      public uploadSample_result deepCopy() {
        return new uploadSample_result(this);
      }
  
      @Override
      public void clear() {
        setSuccessIsSet(false);
        this.success = false;
      }
  
      public boolean isSuccess() {
        return this.success;
      }
  
      public uploadSample_result setSuccess(boolean success) {
        this.success = success;
        setSuccessIsSet(true);
        return this;
      }
  
      public void unsetSuccess() {
        __isset_bitfield = 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 EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
      }
  
      public void setSuccessIsSet(boolean value) {
        __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
      }
  
      public void setFieldValue(_Fields field, Object value) {
        switch (field) {
        case SUCCESS:
          if (value == null) {
            unsetSuccess();
          } else {
            setSuccess((Boolean)value);
          }
          break;
  
        }
      }
  
      public Object getFieldValue(_Fields field) {
        switch (field) {
        case SUCCESS:
          return Boolean.valueOf(isSuccess());
  
        }
        throw new 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 IllegalArgumentException();
        }
  
        switch (field) {
        case SUCCESS:
          return isSetSuccess();
        }
        throw new IllegalStateException();
      }
  
      @Override
      public boolean equals(Object that) {
        if (that == null)
          return false;
        if (that instanceof uploadSample_result)
          return this.equals((uploadSample_result)that);
        return false;
      }
  
      public boolean equals(uploadSample_result that) {
        if (that == null)
          return false;
  
        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() {
        List<Object> list = new ArrayList<Object>();
  
        boolean present_success = true;
        list.add(present_success);
        if (present_success)
          list.add(success);
  
        return list.hashCode();
      }
  
      @Override
      public int compareTo(uploadSample_result other) {
        if (!getClass().equals(other.getClass())) {
          return getClass().getName().compareTo(other.getClass().getName());
        }
  
        int lastComparison = 0;
  
        lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(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;
      }
  
      public _Fields fieldForId(int fieldId) {
        return _Fields.findByThriftId(fieldId);
      }
  
      public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
        schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
      }
  
      public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
        schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
        }
  
      @Override
      public String toString() {
        StringBuilder sb = new StringBuilder("uploadSample_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, 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 uploadSample_resultStandardSchemeFactory implements SchemeFactory {
        public uploadSample_resultStandardScheme getScheme() {
          return new uploadSample_resultStandardScheme();
        }
      }
  
      private static class uploadSample_resultStandardScheme extends StandardScheme<uploadSample_result> {
  
        public void read(org.apache.thrift.protocol.TProtocol iprot, uploadSample_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, uploadSample_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 uploadSample_resultTupleSchemeFactory implements SchemeFactory {
        public uploadSample_resultTupleScheme getScheme() {
          return new uploadSample_resultTupleScheme();
        }
      }
  
      private static class uploadSample_resultTupleScheme extends TupleScheme<uploadSample_result> {
  
        @Override
        public void write(org.apache.thrift.protocol.TProtocol prot, uploadSample_result struct) throws org.apache.thrift.TException {
          TTupleProtocol oprot = (TTupleProtocol) prot;
          BitSet optionals = new 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, uploadSample_result struct) throws org.apache.thrift.TException {
          TTupleProtocol iprot = (TTupleProtocol) prot;
          BitSet incoming = iprot.readBitSet(1);
          if (incoming.get(0)) {
            struct.success = iprot.readBool();
            struct.setSuccessIsSet(true);
          }
        }
      }
  
    }
  
    public static class getReports_args implements org.apache.thrift.TBase<getReports_args, getReports_args._Fields>, java.io.Serializable, Cloneable, Comparable<getReports_args>   {
      private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getReports_args");
  
      private static final org.apache.thrift.protocol.TField UU_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("uuId", org.apache.thrift.protocol.TType.STRING, (short)1);
      private static final org.apache.thrift.protocol.TField FEATURES_FIELD_DESC = new org.apache.thrift.protocol.TField("features", org.apache.thrift.protocol.TType.LIST, (short)2);
  
      private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
      static {
        schemes.put(StandardScheme.class, new getReports_argsStandardSchemeFactory());
        schemes.put(TupleScheme.class, new getReports_argsTupleSchemeFactory());
      }
  
      public String uuId; // required
      public List<Feature> features; // 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 {
        UU_ID((short)1, "uuId"),
        FEATURES((short)2, "features");
  
        private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
  
        static {
          for (_Fields field : EnumSet.allOf(_Fields.class)) {
            byName.put(field.getFieldName(), field);
          }
        }
  
        /**
         * Find the _Fields constant that matches fieldId, or null if its not found.
         */
        public static _Fields findByThriftId(int fieldId) {
          switch(fieldId) {
            case 1: // UU_ID
              return UU_ID;
            case 2: // FEATURES
              return FEATURES;
            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 IllegalArgumentException("Field " + fieldId + " doesn't exist!");
          return fields;
        }
  
        /**
         * Find the _Fields constant that matches name, or null if its not found.
         */
        public static _Fields findByName(String name) {
          return byName.get(name);
        }
  
        private final short _thriftId;
        private final String _fieldName;
  
        _Fields(short thriftId, String fieldName) {
          _thriftId = thriftId;
          _fieldName = fieldName;
        }
  
        public short getThriftFieldId() {
          return _thriftId;
        }
  
        public String getFieldName() {
          return _fieldName;
        }
      }
  
      // isset id assignments
      public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
      static {
        Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
        tmpMap.put(_Fields.UU_ID, new org.apache.thrift.meta_data.FieldMetaData("uuId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
        tmpMap.put(_Fields.FEATURES, new org.apache.thrift.meta_data.FieldMetaData("features", org.apache.thrift.TFieldRequirementType.DEFAULT, 
            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.LIST          , "FeatureList")));
        metaDataMap = Collections.unmodifiableMap(tmpMap);
        org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getReports_args.class, metaDataMap);
      }
  
      public getReports_args() {
      }
  
      public getReports_args(
        String uuId,
        List<Feature> features)
      {
        this();
        this.uuId = uuId;
        this.features = features;
      }
  
      /**
       * Performs a deep copy on <i>other</i>.
       */
      public getReports_args(getReports_args other) {
        if (other.isSetUuId()) {
          this.uuId = other.uuId;
        }
        if (other.isSetFeatures()) {
          this.features = other.features;
        }
      }
  
      public getReports_args deepCopy() {
        return new getReports_args(this);
      }
  
      @Override
      public void clear() {
        this.uuId = null;
        this.features = null;
      }
  
      public String getUuId() {
        return this.uuId;
      }
  
      public getReports_args setUuId(String uuId) {
        this.uuId = uuId;
        return this;
      }
  
      public void unsetUuId() {
        this.uuId = null;
      }
  
      /** Returns true if field uuId is set (has been assigned a value) and false otherwise */
      public boolean isSetUuId() {
        return this.uuId != null;
      }
  
      public void setUuIdIsSet(boolean value) {
        if (!value) {
          this.uuId = null;
        }
      }
  
      public int getFeaturesSize() {
        return (this.features == null) ? 0 : this.features.size();
      }
  
      public java.util.Iterator<Feature> getFeaturesIterator() {
        return (this.features == null) ? null : this.features.iterator();
      }
  
      public void addToFeatures(Feature elem) {
        if (this.features == null) {
          this.features = new ArrayList<Feature>();
        }
        this.features.add(elem);
      }
  
      public List<Feature> getFeatures() {
        return this.features;
      }
  
      public getReports_args setFeatures(List<Feature> features) {
        this.features = features;
        return this;
      }
  
      public void unsetFeatures() {
        this.features = null;
      }
  
      /** Returns true if field features is set (has been assigned a value) and false otherwise */
      public boolean isSetFeatures() {
        return this.features != null;
      }
  
      public void setFeaturesIsSet(boolean value) {
        if (!value) {
          this.features = null;
        }
      }
  
      public void setFieldValue(_Fields field, Object value) {
        switch (field) {
        case UU_ID:
          if (value == null) {
            unsetUuId();
          } else {
            setUuId((String)value);
          }
          break;
  
        case FEATURES:
          if (value == null) {
            unsetFeatures();
          } else {
            setFeatures((List<Feature>)value);
          }
          break;
  
        }
      }
  
      public Object getFieldValue(_Fields field) {
        switch (field) {
        case UU_ID:
          return getUuId();
  
        case FEATURES:
          return getFeatures();
  
        }
        throw new 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 IllegalArgumentException();
        }
  
        switch (field) {
        case UU_ID:
          return isSetUuId();
        case FEATURES:
          return isSetFeatures();
        }
        throw new IllegalStateException();
      }
  
      @Override
      public boolean equals(Object that) {
        if (that == null)
          return false;
        if (that instanceof getReports_args)
          return this.equals((getReports_args)that);
        return false;
      }
  
      public boolean equals(getReports_args that) {
        if (that == null)
          return false;
  
        boolean this_present_uuId = true && this.isSetUuId();
        boolean that_present_uuId = true && that.isSetUuId();
        if (this_present_uuId || that_present_uuId) {
          if (!(this_present_uuId && that_present_uuId))
            return false;
          if (!this.uuId.equals(that.uuId))
            return false;
        }
  
        boolean this_present_features = true && this.isSetFeatures();
        boolean that_present_features = true && that.isSetFeatures();
        if (this_present_features || that_present_features) {
          if (!(this_present_features && that_present_features))
            return false;
          if (!this.features.equals(that.features))
            return false;
        }
  
        return true;
      }
  
      @Override
      public int hashCode() {
        List<Object> list = new ArrayList<Object>();
  
        boolean present_uuId = true && (isSetUuId());
        list.add(present_uuId);
        if (present_uuId)
          list.add(uuId);
  
        boolean present_features = true && (isSetFeatures());
        list.add(present_features);
        if (present_features)
          list.add(features);
  
        return list.hashCode();
      }
  
      @Override
      public int compareTo(getReports_args other) {
        if (!getClass().equals(other.getClass())) {
          return getClass().getName().compareTo(other.getClass().getName());
        }
  
        int lastComparison = 0;
  
        lastComparison = Boolean.valueOf(isSetUuId()).compareTo(other.isSetUuId());
        if (lastComparison != 0) {
          return lastComparison;
        }
        if (isSetUuId()) {
          lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.uuId, other.uuId);
          if (lastComparison != 0) {
            return lastComparison;
          }
        }
        lastComparison = Boolean.valueOf(isSetFeatures()).compareTo(other.isSetFeatures());
        if (lastComparison != 0) {
          return lastComparison;
        }
        if (isSetFeatures()) {
          lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.features, other.features);
          if (lastComparison != 0) {
            return lastComparison;
          }
        }
        return 0;
      }
  
      public _Fields fieldForId(int fieldId) {
        return _Fields.findByThriftId(fieldId);
      }
  
      public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
        schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
      }
  
      public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
        schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
      }
  
      @Override
      public String toString() {
        StringBuilder sb = new StringBuilder("getReports_args(");
        boolean first = true;
  
        sb.append("uuId:");
        if (this.uuId == null) {
          sb.append("null");
        } else {
          sb.append(this.uuId);
        }
        first = false;
        if (!first) sb.append(", ");
        sb.append("features:");
        if (this.features == null) {
          sb.append("null");
        } else {
          sb.append(this.features);
        }
        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, 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 getReports_argsStandardSchemeFactory implements SchemeFactory {
        public getReports_argsStandardScheme getScheme() {
          return new getReports_argsStandardScheme();
        }
      }
  
      private static class getReports_argsStandardScheme extends StandardScheme<getReports_args> {
  
        public void read(org.apache.thrift.protocol.TProtocol iprot, getReports_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: // UU_ID
                if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                  struct.uuId = iprot.readString();
                  struct.setUuIdIsSet(true);
                } else { 
                  org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
                }
                break;
              case 2: // FEATURES
                if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                  {
                    org.apache.thrift.protocol.TList _list88 = iprot.readListBegin();
                    struct.features = new ArrayList<Feature>(_list88.size);
                    Feature _elem89;
                    for (int _i90 = 0; _i90 < _list88.size; ++_i90)
                    {
                      _elem89 = new Feature();
                      _elem89.read(iprot);
                      struct.features.add(_elem89);
                    }
                    iprot.readListEnd();
                  }
                  struct.setFeaturesIsSet(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, getReports_args struct) throws org.apache.thrift.TException {
          struct.validate();
  
          oprot.writeStructBegin(STRUCT_DESC);
          if (struct.uuId != null) {
            oprot.writeFieldBegin(UU_ID_FIELD_DESC);
            oprot.writeString(struct.uuId);
            oprot.writeFieldEnd();
          }
          if (struct.features != null) {
            oprot.writeFieldBegin(FEATURES_FIELD_DESC);
            {
              oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.features.size()));
              for (Feature _iter91 : struct.features)
              {
                _iter91.write(oprot);
              }
              oprot.writeListEnd();
            }
            oprot.writeFieldEnd();
          }
          oprot.writeFieldStop();
          oprot.writeStructEnd();
        }
  
      }
  
      private static class getReports_argsTupleSchemeFactory implements SchemeFactory {
        public getReports_argsTupleScheme getScheme() {
          return new getReports_argsTupleScheme();
        }
      }
  
      private static class getReports_argsTupleScheme extends TupleScheme<getReports_args> {
  
        @Override
        public void write(org.apache.thrift.protocol.TProtocol prot, getReports_args struct) throws org.apache.thrift.TException {
          TTupleProtocol oprot = (TTupleProtocol) prot;
          BitSet optionals = new BitSet();
          if (struct.isSetUuId()) {
            optionals.set(0);
          }
          if (struct.isSetFeatures()) {
            optionals.set(1);
          }
          oprot.writeBitSet(optionals, 2);
          if (struct.isSetUuId()) {
            oprot.writeString(struct.uuId);
          }
          if (struct.isSetFeatures()) {
            {
              oprot.writeI32(struct.features.size());
              for (Feature _iter92 : struct.features)
              {
                _iter92.write(oprot);
              }
            }
          }
        }
  
        @Override
        public void read(org.apache.thrift.protocol.TProtocol prot, getReports_args struct) throws org.apache.thrift.TException {
          TTupleProtocol iprot = (TTupleProtocol) prot;
          BitSet incoming = iprot.readBitSet(2);
          if (incoming.get(0)) {
            struct.uuId = iprot.readString();
            struct.setUuIdIsSet(true);
          }
          if (incoming.get(1)) {
            {
              org.apache.thrift.protocol.TList _list93 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
              struct.features = new ArrayList<Feature>(_list93.size);
              Feature _elem94;
              for (int _i95 = 0; _i95 < _list93.size; ++_i95)
              {
                _elem94 = new Feature();
                _elem94.read(iprot);
                struct.features.add(_elem94);
              }
            }
            struct.setFeaturesIsSet(true);
          }
        }
      }
  
    }
  
    public static class getReports_result implements org.apache.thrift.TBase<getReports_result, getReports_result._Fields>, java.io.Serializable, Cloneable, Comparable<getReports_result>   {
      private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getReports_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 Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
      static {
        schemes.put(StandardScheme.class, new getReports_resultStandardSchemeFactory());
        schemes.put(TupleScheme.class, new getReports_resultTupleSchemeFactory());
      }
  
      public Reports 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 Map<String, _Fields> byName = new HashMap<String, _Fields>();
  
        static {
          for (_Fields field : EnumSet.allOf(_Fields.class)) {
            byName.put(field.getFieldName(), field);
          }
        }
  
        /**
         * Find the _Fields constant that matches fieldId, or null if its not found.
         */
        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 IllegalArgumentException("Field " + fieldId + " doesn't exist!");
          return fields;
        }
  
        /**
         * Find the _Fields constant that matches name, or null if its not found.
         */
        public static _Fields findByName(String name) {
          return byName.get(name);
        }
  
        private final short _thriftId;
        private final String _fieldName;
  
        _Fields(short thriftId, String fieldName) {
          _thriftId = thriftId;
          _fieldName = fieldName;
        }
  
        public short getThriftFieldId() {
          return _thriftId;
        }
  
        public String getFieldName() {
          return _fieldName;
        }
      }
  
      // isset id assignments
      public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
      static {
        Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new 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, Reports.class)));
        metaDataMap = Collections.unmodifiableMap(tmpMap);
        org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getReports_result.class, metaDataMap);
      }
  
      public getReports_result() {
      }
  
      public getReports_result(
        Reports success)
      {
        this();
        this.success = success;
      }
  
      /**
       * Performs a deep copy on <i>other</i>.
       */
      public getReports_result(getReports_result other) {
        if (other.isSetSuccess()) {
          this.success = new Reports(other.success);
        }
      }
  
      public getReports_result deepCopy() {
        return new getReports_result(this);
      }
  
      @Override
      public void clear() {
        this.success = null;
      }
  
      public Reports getSuccess() {
        return this.success;
      }
  
      public getReports_result setSuccess(Reports 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, Object value) {
        switch (field) {
        case SUCCESS:
          if (value == null) {
            unsetSuccess();
          } else {
            setSuccess((Reports)value);
          }
          break;
  
        }
      }
  
      public Object getFieldValue(_Fields field) {
        switch (field) {
        case SUCCESS:
          return getSuccess();
  
        }
        throw new 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 IllegalArgumentException();
        }
  
        switch (field) {
        case SUCCESS:
          return isSetSuccess();
        }
        throw new IllegalStateException();
      }
  
      @Override
      public boolean equals(Object that) {
        if (that == null)
          return false;
        if (that instanceof getReports_result)
          return this.equals((getReports_result)that);
        return false;
      }
  
      public boolean equals(getReports_result that) {
        if (that == null)
          return false;
  
        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() {
        List<Object> list = new ArrayList<Object>();
  
        boolean present_success = true && (isSetSuccess());
        list.add(present_success);
        if (present_success)
          list.add(success);
  
        return list.hashCode();
      }
  
      @Override
      public int compareTo(getReports_result other) {
        if (!getClass().equals(other.getClass())) {
          return getClass().getName().compareTo(other.getClass().getName());
        }
  
        int lastComparison = 0;
  
        lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(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;
      }
  
      public _Fields fieldForId(int fieldId) {
        return _Fields.findByThriftId(fieldId);
      }
  
      public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
        schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
      }
  
      public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
        schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
        }
  
      @Override
      public String toString() {
        StringBuilder sb = new StringBuilder("getReports_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, 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 getReports_resultStandardSchemeFactory implements SchemeFactory {
        public getReports_resultStandardScheme getScheme() {
          return new getReports_resultStandardScheme();
        }
      }
  
      private static class getReports_resultStandardScheme extends StandardScheme<getReports_result> {
  
        public void read(org.apache.thrift.protocol.TProtocol iprot, getReports_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 Reports();
                  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, getReports_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 getReports_resultTupleSchemeFactory implements SchemeFactory {
        public getReports_resultTupleScheme getScheme() {
          return new getReports_resultTupleScheme();
        }
      }
  
      private static class getReports_resultTupleScheme extends TupleScheme<getReports_result> {
  
        @Override
        public void write(org.apache.thrift.protocol.TProtocol prot, getReports_result struct) throws org.apache.thrift.TException {
          TTupleProtocol oprot = (TTupleProtocol) prot;
          BitSet optionals = new 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, getReports_result struct) throws org.apache.thrift.TException {
          TTupleProtocol iprot = (TTupleProtocol) prot;
          BitSet incoming = iprot.readBitSet(1);
          if (incoming.get(0)) {
            struct.success = new Reports();
            struct.success.read(iprot);
            struct.setSuccessIsSet(true);
          }
        }
      }
  
    }
  
    public static class getHogOrBugReport_args implements org.apache.thrift.TBase<getHogOrBugReport_args, getHogOrBugReport_args._Fields>, java.io.Serializable, Cloneable, Comparable<getHogOrBugReport_args>   {
      private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getHogOrBugReport_args");
  
      private static final org.apache.thrift.protocol.TField UU_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("uuId", org.apache.thrift.protocol.TType.STRING, (short)1);
      private static final org.apache.thrift.protocol.TField FEATURES_FIELD_DESC = new org.apache.thrift.protocol.TField("features", org.apache.thrift.protocol.TType.LIST, (short)2);
  
      private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
      static {
        schemes.put(StandardScheme.class, new getHogOrBugReport_argsStandardSchemeFactory());
        schemes.put(TupleScheme.class, new getHogOrBugReport_argsTupleSchemeFactory());
      }
  
      public String uuId; // required
      public List<Feature> features; // 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 {
        UU_ID((short)1, "uuId"),
        FEATURES((short)2, "features");
  
        private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
  
        static {
          for (_Fields field : EnumSet.allOf(_Fields.class)) {
            byName.put(field.getFieldName(), field);
          }
        }
  
        /**
         * Find the _Fields constant that matches fieldId, or null if its not found.
         */
        public static _Fields findByThriftId(int fieldId) {
          switch(fieldId) {
            case 1: // UU_ID
              return UU_ID;
            case 2: // FEATURES
              return FEATURES;
            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 IllegalArgumentException("Field " + fieldId + " doesn't exist!");
          return fields;
        }
  
        /**
         * Find the _Fields constant that matches name, or null if its not found.
         */
        public static _Fields findByName(String name) {
          return byName.get(name);
        }
  
        private final short _thriftId;
        private final String _fieldName;
  
        _Fields(short thriftId, String fieldName) {
          _thriftId = thriftId;
          _fieldName = fieldName;
        }
  
        public short getThriftFieldId() {
          return _thriftId;
        }
  
        public String getFieldName() {
          return _fieldName;
        }
      }
  
      // isset id assignments
      public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
      static {
        Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
        tmpMap.put(_Fields.UU_ID, new org.apache.thrift.meta_data.FieldMetaData("uuId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
        tmpMap.put(_Fields.FEATURES, new org.apache.thrift.meta_data.FieldMetaData("features", org.apache.thrift.TFieldRequirementType.DEFAULT, 
            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.LIST          , "FeatureList")));
        metaDataMap = Collections.unmodifiableMap(tmpMap);
        org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getHogOrBugReport_args.class, metaDataMap);
      }
  
      public getHogOrBugReport_args() {
      }
  
      public getHogOrBugReport_args(
        String uuId,
        List<Feature> features)
      {
        this();
        this.uuId = uuId;
        this.features = features;
      }
  
      /**
       * Performs a deep copy on <i>other</i>.
       */
      public getHogOrBugReport_args(getHogOrBugReport_args other) {
        if (other.isSetUuId()) {
          this.uuId = other.uuId;
        }
        if (other.isSetFeatures()) {
          this.features = other.features;
        }
      }
  
      public getHogOrBugReport_args deepCopy() {
        return new getHogOrBugReport_args(this);
      }
  
      @Override
      public void clear() {
        this.uuId = null;
        this.features = null;
      }
  
      public String getUuId() {
        return this.uuId;
      }
  
      public getHogOrBugReport_args setUuId(String uuId) {
        this.uuId = uuId;
        return this;
      }
  
      public void unsetUuId() {
        this.uuId = null;
      }
  
      /** Returns true if field uuId is set (has been assigned a value) and false otherwise */
      public boolean isSetUuId() {
        return this.uuId != null;
      }
  
      public void setUuIdIsSet(boolean value) {
        if (!value) {
          this.uuId = null;
        }
      }
  
      public int getFeaturesSize() {
        return (this.features == null) ? 0 : this.features.size();
      }
  
      public java.util.Iterator<Feature> getFeaturesIterator() {
        return (this.features == null) ? null : this.features.iterator();
      }
  
      public void addToFeatures(Feature elem) {
        if (this.features == null) {
          this.features = new ArrayList<Feature>();
        }
        this.features.add(elem);
      }
  
      public List<Feature> getFeatures() {
        return this.features;
      }
  
      public getHogOrBugReport_args setFeatures(List<Feature> features) {
        this.features = features;
        return this;
      }
  
      public void unsetFeatures() {
        this.features = null;
      }
  
      /** Returns true if field features is set (has been assigned a value) and false otherwise */
      public boolean isSetFeatures() {
        return this.features != null;
      }
  
      public void setFeaturesIsSet(boolean value) {
        if (!value) {
          this.features = null;
        }
      }
  
      public void setFieldValue(_Fields field, Object value) {
        switch (field) {
        case UU_ID:
          if (value == null) {
            unsetUuId();
          } else {
            setUuId((String)value);
          }
          break;
  
        case FEATURES:
          if (value == null) {
            unsetFeatures();
          } else {
            setFeatures((List<Feature>)value);
          }
          break;
  
        }
      }
  
      public Object getFieldValue(_Fields field) {
        switch (field) {
        case UU_ID:
          return getUuId();
  
        case FEATURES:
          return getFeatures();
  
        }
        throw new 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 IllegalArgumentException();
        }
  
        switch (field) {
        case UU_ID:
          return isSetUuId();
        case FEATURES:
          return isSetFeatures();
        }
        throw new IllegalStateException();
      }
  
      @Override
      public boolean equals(Object that) {
        if (that == null)
          return false;
        if (that instanceof getHogOrBugReport_args)
          return this.equals((getHogOrBugReport_args)that);
        return false;
      }
  
      public boolean equals(getHogOrBugReport_args that) {
        if (that == null)
          return false;
  
        boolean this_present_uuId = true && this.isSetUuId();
        boolean that_present_uuId = true && that.isSetUuId();
        if (this_present_uuId || that_present_uuId) {
          if (!(this_present_uuId && that_present_uuId))
            return false;
          if (!this.uuId.equals(that.uuId))
            return false;
        }
  
        boolean this_present_features = true && this.isSetFeatures();
        boolean that_present_features = true && that.isSetFeatures();
        if (this_present_features || that_present_features) {
          if (!(this_present_features && that_present_features))
            return false;
          if (!this.features.equals(that.features))
            return false;
        }
  
        return true;
      }
  
      @Override
      public int hashCode() {
        List<Object> list = new ArrayList<Object>();
  
        boolean present_uuId = true && (isSetUuId());
        list.add(present_uuId);
        if (present_uuId)
          list.add(uuId);
  
        boolean present_features = true && (isSetFeatures());
        list.add(present_features);
        if (present_features)
          list.add(features);
  
        return list.hashCode();
      }
  
      @Override
      public int compareTo(getHogOrBugReport_args other) {
        if (!getClass().equals(other.getClass())) {
          return getClass().getName().compareTo(other.getClass().getName());
        }
  
        int lastComparison = 0;
  
        lastComparison = Boolean.valueOf(isSetUuId()).compareTo(other.isSetUuId());
        if (lastComparison != 0) {
          return lastComparison;
        }
        if (isSetUuId()) {
          lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.uuId, other.uuId);
          if (lastComparison != 0) {
            return lastComparison;
          }
        }
        lastComparison = Boolean.valueOf(isSetFeatures()).compareTo(other.isSetFeatures());
        if (lastComparison != 0) {
          return lastComparison;
        }
        if (isSetFeatures()) {
          lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.features, other.features);
          if (lastComparison != 0) {
            return lastComparison;
          }
        }
        return 0;
      }
  
      public _Fields fieldForId(int fieldId) {
        return _Fields.findByThriftId(fieldId);
      }
  
      public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
        schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
      }
  
      public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
        schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
      }
  
      @Override
      public String toString() {
        StringBuilder sb = new StringBuilder("getHogOrBugReport_args(");
        boolean first = true;
  
        sb.append("uuId:");
        if (this.uuId == null) {
          sb.append("null");
        } else {
          sb.append(this.uuId);
        }
        first = false;
        if (!first) sb.append(", ");
        sb.append("features:");
        if (this.features == null) {
          sb.append("null");
        } else {
          sb.append(this.features);
        }
        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, 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 getHogOrBugReport_argsStandardSchemeFactory implements SchemeFactory {
        public getHogOrBugReport_argsStandardScheme getScheme() {
          return new getHogOrBugReport_argsStandardScheme();
        }
      }
  
      private static class getHogOrBugReport_argsStandardScheme extends StandardScheme<getHogOrBugReport_args> {
  
        public void read(org.apache.thrift.protocol.TProtocol iprot, getHogOrBugReport_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: // UU_ID
                if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                  struct.uuId = iprot.readString();
                  struct.setUuIdIsSet(true);
                } else { 
                  org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
                }
                break;
              case 2: // FEATURES
                if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                  {
                    org.apache.thrift.protocol.TList _list96 = iprot.readListBegin();
                    struct.features = new ArrayList<Feature>(_list96.size);
                    Feature _elem97;
                    for (int _i98 = 0; _i98 < _list96.size; ++_i98)
                    {
                      _elem97 = new Feature();
                      _elem97.read(iprot);
                      struct.features.add(_elem97);
                    }
                    iprot.readListEnd();
                  }
                  struct.setFeaturesIsSet(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, getHogOrBugReport_args struct) throws org.apache.thrift.TException {
          struct.validate();
  
          oprot.writeStructBegin(STRUCT_DESC);
          if (struct.uuId != null) {
            oprot.writeFieldBegin(UU_ID_FIELD_DESC);
            oprot.writeString(struct.uuId);
            oprot.writeFieldEnd();
          }
          if (struct.features != null) {
            oprot.writeFieldBegin(FEATURES_FIELD_DESC);
            {
              oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.features.size()));
              for (Feature _iter99 : struct.features)
              {
                _iter99.write(oprot);
              }
              oprot.writeListEnd();
            }
            oprot.writeFieldEnd();
          }
          oprot.writeFieldStop();
          oprot.writeStructEnd();
        }
  
      }
  
      private static class getHogOrBugReport_argsTupleSchemeFactory implements SchemeFactory {
        public getHogOrBugReport_argsTupleScheme getScheme() {
          return new getHogOrBugReport_argsTupleScheme();
        }
      }
  
      private static class getHogOrBugReport_argsTupleScheme extends TupleScheme<getHogOrBugReport_args> {
  
        @Override
        public void write(org.apache.thrift.protocol.TProtocol prot, getHogOrBugReport_args struct) throws org.apache.thrift.TException {
          TTupleProtocol oprot = (TTupleProtocol) prot;
          BitSet optionals = new BitSet();
          if (struct.isSetUuId()) {
            optionals.set(0);
          }
          if (struct.isSetFeatures()) {
            optionals.set(1);
          }
          oprot.writeBitSet(optionals, 2);
          if (struct.isSetUuId()) {
            oprot.writeString(struct.uuId);
          }
          if (struct.isSetFeatures()) {
            {
              oprot.writeI32(struct.features.size());
              for (Feature _iter100 : struct.features)
              {
                _iter100.write(oprot);
              }
            }
          }
        }
  
        @Override
        public void read(org.apache.thrift.protocol.TProtocol prot, getHogOrBugReport_args struct) throws org.apache.thrift.TException {
          TTupleProtocol iprot = (TTupleProtocol) prot;
          BitSet incoming = iprot.readBitSet(2);
          if (incoming.get(0)) {
            struct.uuId = iprot.readString();
            struct.setUuIdIsSet(true);
          }
          if (incoming.get(1)) {
            {
              org.apache.thrift.protocol.TList _list101 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
              struct.features = new ArrayList<Feature>(_list101.size);
              Feature _elem102;
              for (int _i103 = 0; _i103 < _list101.size; ++_i103)
              {
                _elem102 = new Feature();
                _elem102.read(iprot);
                struct.features.add(_elem102);
              }
            }
            struct.setFeaturesIsSet(true);
          }
        }
      }
  
    }
  
    public static class getHogOrBugReport_result implements org.apache.thrift.TBase<getHogOrBugReport_result, getHogOrBugReport_result._Fields>, java.io.Serializable, Cloneable, Comparable<getHogOrBugReport_result>   {
      private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getHogOrBugReport_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 Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
      static {
        schemes.put(StandardScheme.class, new getHogOrBugReport_resultStandardSchemeFactory());
        schemes.put(TupleScheme.class, new getHogOrBugReport_resultTupleSchemeFactory());
      }
  
      public HogBugReport 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 Map<String, _Fields> byName = new HashMap<String, _Fields>();
  
        static {
          for (_Fields field : EnumSet.allOf(_Fields.class)) {
            byName.put(field.getFieldName(), field);
          }
        }
  
        /**
         * Find the _Fields constant that matches fieldId, or null if its not found.
         */
        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 IllegalArgumentException("Field " + fieldId + " doesn't exist!");
          return fields;
        }
  
        /**
         * Find the _Fields constant that matches name, or null if its not found.
         */
        public static _Fields findByName(String name) {
          return byName.get(name);
        }
  
        private final short _thriftId;
        private final String _fieldName;
  
        _Fields(short thriftId, String fieldName) {
          _thriftId = thriftId;
          _fieldName = fieldName;
        }
  
        public short getThriftFieldId() {
          return _thriftId;
        }
  
        public String getFieldName() {
          return _fieldName;
        }
      }
  
      // isset id assignments
      public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
      static {
        Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new 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, HogBugReport.class)));
        metaDataMap = Collections.unmodifiableMap(tmpMap);
        org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getHogOrBugReport_result.class, metaDataMap);
      }
  
      public getHogOrBugReport_result() {
      }
  
      public getHogOrBugReport_result(
        HogBugReport success)
      {
        this();
        this.success = success;
      }
  
      /**
       * Performs a deep copy on <i>other</i>.
       */
      public getHogOrBugReport_result(getHogOrBugReport_result other) {
        if (other.isSetSuccess()) {
          this.success = new HogBugReport(other.success);
        }
      }
  
      public getHogOrBugReport_result deepCopy() {
        return new getHogOrBugReport_result(this);
      }
  
      @Override
      public void clear() {
        this.success = null;
      }
  
      public HogBugReport getSuccess() {
        return this.success;
      }
  
      public getHogOrBugReport_result setSuccess(HogBugReport 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, Object value) {
        switch (field) {
        case SUCCESS:
          if (value == null) {
            unsetSuccess();
          } else {
            setSuccess((HogBugReport)value);
          }
          break;
  
        }
      }
  
      public Object getFieldValue(_Fields field) {
        switch (field) {
        case SUCCESS:
          return getSuccess();
  
        }
        throw new 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 IllegalArgumentException();
        }
  
        switch (field) {
        case SUCCESS:
          return isSetSuccess();
        }
        throw new IllegalStateException();
      }
  
      @Override
      public boolean equals(Object that) {
        if (that == null)
          return false;
        if (that instanceof getHogOrBugReport_result)
          return this.equals((getHogOrBugReport_result)that);
        return false;
      }
  
      public boolean equals(getHogOrBugReport_result that) {
        if (that == null)
          return false;
  
        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() {
        List<Object> list = new ArrayList<Object>();
  
        boolean present_success = true && (isSetSuccess());
        list.add(present_success);
        if (present_success)
          list.add(success);
  
        return list.hashCode();
      }
  
      @Override
      public int compareTo(getHogOrBugReport_result other) {
        if (!getClass().equals(other.getClass())) {
          return getClass().getName().compareTo(other.getClass().getName());
        }
  
        int lastComparison = 0;
  
        lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(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;
      }
  
      public _Fields fieldForId(int fieldId) {
        return _Fields.findByThriftId(fieldId);
      }
  
      public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
        schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
      }
  
      public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
        schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
        }
  
      @Override
      public String toString() {
        StringBuilder sb = new StringBuilder("getHogOrBugReport_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, 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 getHogOrBugReport_resultStandardSchemeFactory implements SchemeFactory {
        public getHogOrBugReport_resultStandardScheme getScheme() {
          return new getHogOrBugReport_resultStandardScheme();
        }
      }
  
      private static class getHogOrBugReport_resultStandardScheme extends StandardScheme<getHogOrBugReport_result> {
  
        public void read(org.apache.thrift.protocol.TProtocol iprot, getHogOrBugReport_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 HogBugReport();
                  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, getHogOrBugReport_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 getHogOrBugReport_resultTupleSchemeFactory implements SchemeFactory {
        public getHogOrBugReport_resultTupleScheme getScheme() {
          return new getHogOrBugReport_resultTupleScheme();
        }
      }
  
      private static class getHogOrBugReport_resultTupleScheme extends TupleScheme<getHogOrBugReport_result> {
  
        @Override
        public void write(org.apache.thrift.protocol.TProtocol prot, getHogOrBugReport_result struct) throws org.apache.thrift.TException {
          TTupleProtocol oprot = (TTupleProtocol) prot;
          BitSet optionals = new 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, getHogOrBugReport_result struct) throws org.apache.thrift.TException {
          TTupleProtocol iprot = (TTupleProtocol) prot;
          BitSet incoming = iprot.readBitSet(1);
          if (incoming.get(0)) {
            struct.success = new HogBugReport();
            struct.success.read(iprot);
            struct.setSuccessIsSet(true);
          }
        }
      }
  
    }
  
    public static class getQuickHogsAndMaybeRegister_args implements org.apache.thrift.TBase<getQuickHogsAndMaybeRegister_args, getQuickHogsAndMaybeRegister_args._Fields>, java.io.Serializable, Cloneable, Comparable<getQuickHogsAndMaybeRegister_args>   {
      private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getQuickHogsAndMaybeRegister_args");
  
      private static final org.apache.thrift.protocol.TField REGISTRATION_FIELD_DESC = new org.apache.thrift.protocol.TField("registration", org.apache.thrift.protocol.TType.STRUCT, (short)1);
      private static final org.apache.thrift.protocol.TField PROCESS_LIST_FIELD_DESC = new org.apache.thrift.protocol.TField("processList", org.apache.thrift.protocol.TType.LIST, (short)2);
  
      private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
      static {
        schemes.put(StandardScheme.class, new getQuickHogsAndMaybeRegister_argsStandardSchemeFactory());
        schemes.put(TupleScheme.class, new getQuickHogsAndMaybeRegister_argsTupleSchemeFactory());
      }
  
      public Registration registration; // required
      public List<String> processList; // 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 {
        REGISTRATION((short)1, "registration"),
        PROCESS_LIST((short)2, "processList");
  
        private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
  
        static {
          for (_Fields field : EnumSet.allOf(_Fields.class)) {
            byName.put(field.getFieldName(), field);
          }
        }
  
        /**
         * Find the _Fields constant that matches fieldId, or null if its not found.
         */
        public static _Fields findByThriftId(int fieldId) {
          switch(fieldId) {
            case 1: // REGISTRATION
              return REGISTRATION;
            case 2: // PROCESS_LIST
              return PROCESS_LIST;
            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 IllegalArgumentException("Field " + fieldId + " doesn't exist!");
          return fields;
        }
  
        /**
         * Find the _Fields constant that matches name, or null if its not found.
         */
        public static _Fields findByName(String name) {
          return byName.get(name);
        }
  
        private final short _thriftId;
        private final String _fieldName;
  
        _Fields(short thriftId, String fieldName) {
          _thriftId = thriftId;
          _fieldName = fieldName;
        }
  
        public short getThriftFieldId() {
          return _thriftId;
        }
  
        public String getFieldName() {
          return _fieldName;
        }
      }
  
      // isset id assignments
      public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
      static {
        Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
        tmpMap.put(_Fields.REGISTRATION, new org.apache.thrift.meta_data.FieldMetaData("registration", org.apache.thrift.TFieldRequirementType.DEFAULT, 
            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Registration.class)));
        tmpMap.put(_Fields.PROCESS_LIST, new org.apache.thrift.meta_data.FieldMetaData("processList", 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.STRING))));
        metaDataMap = Collections.unmodifiableMap(tmpMap);
        org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getQuickHogsAndMaybeRegister_args.class, metaDataMap);
      }
  
      public getQuickHogsAndMaybeRegister_args() {
      }
  
      public getQuickHogsAndMaybeRegister_args(
        Registration registration,
        List<String> processList)
      {
        this();
        this.registration = registration;
        this.processList = processList;
      }
  
      /**
       * Performs a deep copy on <i>other</i>.
       */
      public getQuickHogsAndMaybeRegister_args(getQuickHogsAndMaybeRegister_args other) {
        if (other.isSetRegistration()) {
          this.registration = new Registration(other.registration);
        }
        if (other.isSetProcessList()) {
          List<String> __this__processList = new ArrayList<String>(other.processList);
          this.processList = __this__processList;
        }
      }
  
      public getQuickHogsAndMaybeRegister_args deepCopy() {
        return new getQuickHogsAndMaybeRegister_args(this);
      }
  
      @Override
      public void clear() {
        this.registration = null;
        this.processList = null;
      }
  
      public Registration getRegistration() {
        return this.registration;
      }
  
      public getQuickHogsAndMaybeRegister_args setRegistration(Registration registration) {
        this.registration = registration;
        return this;
      }
  
      public void unsetRegistration() {
        this.registration = null;
      }
  
      /** Returns true if field registration is set (has been assigned a value) and false otherwise */
      public boolean isSetRegistration() {
        return this.registration != null;
      }
  
      public void setRegistrationIsSet(boolean value) {
        if (!value) {
          this.registration = null;
        }
      }
  
      public int getProcessListSize() {
        return (this.processList == null) ? 0 : this.processList.size();
      }
  
      public java.util.Iterator<String> getProcessListIterator() {
        return (this.processList == null) ? null : this.processList.iterator();
      }
  
      public void addToProcessList(String elem) {
        if (this.processList == null) {
          this.processList = new ArrayList<String>();
        }
        this.processList.add(elem);
      }
  
      public List<String> getProcessList() {
        return this.processList;
      }
  
      public getQuickHogsAndMaybeRegister_args setProcessList(List<String> processList) {
        this.processList = processList;
        return this;
      }
  
      public void unsetProcessList() {
        this.processList = null;
      }
  
      /** Returns true if field processList is set (has been assigned a value) and false otherwise */
      public boolean isSetProcessList() {
        return this.processList != null;
      }
  
      public void setProcessListIsSet(boolean value) {
        if (!value) {
          this.processList = null;
        }
      }
  
      public void setFieldValue(_Fields field, Object value) {
        switch (field) {
        case REGISTRATION:
          if (value == null) {
            unsetRegistration();
          } else {
            setRegistration((Registration)value);
          }
          break;
  
        case PROCESS_LIST:
          if (value == null) {
            unsetProcessList();
          } else {
            setProcessList((List<String>)value);
          }
          break;
  
        }
      }
  
      public Object getFieldValue(_Fields field) {
        switch (field) {
        case REGISTRATION:
          return getRegistration();
  
        case PROCESS_LIST:
          return getProcessList();
  
        }
        throw new 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 IllegalArgumentException();
        }
  
        switch (field) {
        case REGISTRATION:
          return isSetRegistration();
        case PROCESS_LIST:
          return isSetProcessList();
        }
        throw new IllegalStateException();
      }
  
      @Override
      public boolean equals(Object that) {
        if (that == null)
          return false;
        if (that instanceof getQuickHogsAndMaybeRegister_args)
          return this.equals((getQuickHogsAndMaybeRegister_args)that);
        return false;
      }
  
      public boolean equals(getQuickHogsAndMaybeRegister_args that) {
        if (that == null)
          return false;
  
        boolean this_present_registration = true && this.isSetRegistration();
        boolean that_present_registration = true && that.isSetRegistration();
        if (this_present_registration || that_present_registration) {
          if (!(this_present_registration && that_present_registration))
            return false;
          if (!this.registration.equals(that.registration))
            return false;
        }
  
        boolean this_present_processList = true && this.isSetProcessList();
        boolean that_present_processList = true && that.isSetProcessList();
        if (this_present_processList || that_present_processList) {
          if (!(this_present_processList && that_present_processList))
            return false;
          if (!this.processList.equals(that.processList))
            return false;
        }
  
        return true;
      }
  
      @Override
      public int hashCode() {
        List<Object> list = new ArrayList<Object>();
  
        boolean present_registration = true && (isSetRegistration());
        list.add(present_registration);
        if (present_registration)
          list.add(registration);
  
        boolean present_processList = true && (isSetProcessList());
        list.add(present_processList);
        if (present_processList)
          list.add(processList);
  
        return list.hashCode();
      }
  
      @Override
      public int compareTo(getQuickHogsAndMaybeRegister_args other) {
        if (!getClass().equals(other.getClass())) {
          return getClass().getName().compareTo(other.getClass().getName());
        }
  
        int lastComparison = 0;
  
        lastComparison = Boolean.valueOf(isSetRegistration()).compareTo(other.isSetRegistration());
        if (lastComparison != 0) {
          return lastComparison;
        }
        if (isSetRegistration()) {
          lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.registration, other.registration);
          if (lastComparison != 0) {
            return lastComparison;
          }
        }
        lastComparison = Boolean.valueOf(isSetProcessList()).compareTo(other.isSetProcessList());
        if (lastComparison != 0) {
          return lastComparison;
        }
        if (isSetProcessList()) {
          lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.processList, other.processList);
          if (lastComparison != 0) {
            return lastComparison;
          }
        }
        return 0;
      }
  
      public _Fields fieldForId(int fieldId) {
        return _Fields.findByThriftId(fieldId);
      }
  
      public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
        schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
      }
  
      public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
        schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
      }
  
      @Override
      public String toString() {
        StringBuilder sb = new StringBuilder("getQuickHogsAndMaybeRegister_args(");
        boolean first = true;
  
        sb.append("registration:");
        if (this.registration == null) {
          sb.append("null");
        } else {
          sb.append(this.registration);
        }
        first = false;
        if (!first) sb.append(", ");
        sb.append("processList:");
        if (this.processList == null) {
          sb.append("null");
        } else {
          sb.append(this.processList);
        }
        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 (registration != null) {
          registration.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, 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 getQuickHogsAndMaybeRegister_argsStandardSchemeFactory implements SchemeFactory {
        public getQuickHogsAndMaybeRegister_argsStandardScheme getScheme() {
          return new getQuickHogsAndMaybeRegister_argsStandardScheme();
        }
      }
  
      private static class getQuickHogsAndMaybeRegister_argsStandardScheme extends StandardScheme<getQuickHogsAndMaybeRegister_args> {
  
        public void read(org.apache.thrift.protocol.TProtocol iprot, getQuickHogsAndMaybeRegister_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: // REGISTRATION
                if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                  struct.registration = new Registration();
                  struct.registration.read(iprot);
                  struct.setRegistrationIsSet(true);
                } else { 
                  org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
                }
                break;
              case 2: // PROCESS_LIST
                if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                  {
                    org.apache.thrift.protocol.TList _list104 = iprot.readListBegin();
                    struct.processList = new ArrayList<String>(_list104.size);
                    String _elem105;
                    for (int _i106 = 0; _i106 < _list104.size; ++_i106)
                    {
                      _elem105 = iprot.readString();
                      struct.processList.add(_elem105);
                    }
                    iprot.readListEnd();
                  }
                  struct.setProcessListIsSet(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, getQuickHogsAndMaybeRegister_args struct) throws org.apache.thrift.TException {
          struct.validate();
  
          oprot.writeStructBegin(STRUCT_DESC);
          if (struct.registration != null) {
            oprot.writeFieldBegin(REGISTRATION_FIELD_DESC);
            struct.registration.write(oprot);
            oprot.writeFieldEnd();
          }
          if (struct.processList != null) {
            oprot.writeFieldBegin(PROCESS_LIST_FIELD_DESC);
            {
              oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.processList.size()));
              for (String _iter107 : struct.processList)
              {
                oprot.writeString(_iter107);
              }
              oprot.writeListEnd();
            }
            oprot.writeFieldEnd();
          }
          oprot.writeFieldStop();
          oprot.writeStructEnd();
        }
  
      }
  
      private static class getQuickHogsAndMaybeRegister_argsTupleSchemeFactory implements SchemeFactory {
        public getQuickHogsAndMaybeRegister_argsTupleScheme getScheme() {
          return new getQuickHogsAndMaybeRegister_argsTupleScheme();
        }
      }
  
      private static class getQuickHogsAndMaybeRegister_argsTupleScheme extends TupleScheme<getQuickHogsAndMaybeRegister_args> {
  
        @Override
        public void write(org.apache.thrift.protocol.TProtocol prot, getQuickHogsAndMaybeRegister_args struct) throws org.apache.thrift.TException {
          TTupleProtocol oprot = (TTupleProtocol) prot;
          BitSet optionals = new BitSet();
          if (struct.isSetRegistration()) {
            optionals.set(0);
          }
          if (struct.isSetProcessList()) {
            optionals.set(1);
          }
          oprot.writeBitSet(optionals, 2);
          if (struct.isSetRegistration()) {
            struct.registration.write(oprot);
          }
          if (struct.isSetProcessList()) {
            {
              oprot.writeI32(struct.processList.size());
              for (String _iter108 : struct.processList)
              {
                oprot.writeString(_iter108);
              }
            }
          }
        }
  
        @Override
        public void read(org.apache.thrift.protocol.TProtocol prot, getQuickHogsAndMaybeRegister_args struct) throws org.apache.thrift.TException {
          TTupleProtocol iprot = (TTupleProtocol) prot;
          BitSet incoming = iprot.readBitSet(2);
          if (incoming.get(0)) {
            struct.registration = new Registration();
            struct.registration.read(iprot);
            struct.setRegistrationIsSet(true);
          }
          if (incoming.get(1)) {
            {
              org.apache.thrift.protocol.TList _list109 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
              struct.processList = new ArrayList<String>(_list109.size);
              String _elem110;
              for (int _i111 = 0; _i111 < _list109.size; ++_i111)
              {
                _elem110 = iprot.readString();
                struct.processList.add(_elem110);
              }
            }
            struct.setProcessListIsSet(true);
          }
        }
      }
  
    }
  
    public static class getQuickHogsAndMaybeRegister_result implements org.apache.thrift.TBase<getQuickHogsAndMaybeRegister_result, getQuickHogsAndMaybeRegister_result._Fields>, java.io.Serializable, Cloneable, Comparable<getQuickHogsAndMaybeRegister_result>   {
      private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getQuickHogsAndMaybeRegister_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 Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
      static {
        schemes.put(StandardScheme.class, new getQuickHogsAndMaybeRegister_resultStandardSchemeFactory());
        schemes.put(TupleScheme.class, new getQuickHogsAndMaybeRegister_resultTupleSchemeFactory());
      }
  
      public HogBugReport 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 Map<String, _Fields> byName = new HashMap<String, _Fields>();
  
        static {
          for (_Fields field : EnumSet.allOf(_Fields.class)) {
            byName.put(field.getFieldName(), field);
          }
        }
  
        /**
         * Find the _Fields constant that matches fieldId, or null if its not found.
         */
        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 IllegalArgumentException("Field " + fieldId + " doesn't exist!");
          return fields;
        }
  
        /**
         * Find the _Fields constant that matches name, or null if its not found.
         */
        public static _Fields findByName(String name) {
          return byName.get(name);
        }
  
        private final short _thriftId;
        private final String _fieldName;
  
        _Fields(short thriftId, String fieldName) {
          _thriftId = thriftId;
          _fieldName = fieldName;
        }
  
        public short getThriftFieldId() {
          return _thriftId;
        }
  
        public String getFieldName() {
          return _fieldName;
        }
      }
  
      // isset id assignments
      public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
      static {
        Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new 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, HogBugReport.class)));
        metaDataMap = Collections.unmodifiableMap(tmpMap);
        org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getQuickHogsAndMaybeRegister_result.class, metaDataMap);
      }
  
      public getQuickHogsAndMaybeRegister_result() {
      }
  
      public getQuickHogsAndMaybeRegister_result(
        HogBugReport success)
      {
        this();
        this.success = success;
      }
  
      /**
       * Performs a deep copy on <i>other</i>.
       */
      public getQuickHogsAndMaybeRegister_result(getQuickHogsAndMaybeRegister_result other) {
        if (other.isSetSuccess()) {
          this.success = new HogBugReport(other.success);
        }
      }
  
      public getQuickHogsAndMaybeRegister_result deepCopy() {
        return new getQuickHogsAndMaybeRegister_result(this);
      }
  
      @Override
      public void clear() {
        this.success = null;
      }
  
      public HogBugReport getSuccess() {
        return this.success;
      }
  
      public getQuickHogsAndMaybeRegister_result setSuccess(HogBugReport 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, Object value) {
        switch (field) {
        case SUCCESS:
          if (value == null) {
            unsetSuccess();
          } else {
            setSuccess((HogBugReport)value);
          }
          break;
  
        }
      }
  
      public Object getFieldValue(_Fields field) {
        switch (field) {
        case SUCCESS:
          return getSuccess();
  
        }
        throw new 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 IllegalArgumentException();
        }
  
        switch (field) {
        case SUCCESS:
          return isSetSuccess();
        }
        throw new IllegalStateException();
      }
  
      @Override
      public boolean equals(Object that) {
        if (that == null)
          return false;
        if (that instanceof getQuickHogsAndMaybeRegister_result)
          return this.equals((getQuickHogsAndMaybeRegister_result)that);
        return false;
      }
  
      public boolean equals(getQuickHogsAndMaybeRegister_result that) {
        if (that == null)
          return false;
  
        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() {
        List<Object> list = new ArrayList<Object>();
  
        boolean present_success = true && (isSetSuccess());
        list.add(present_success);
        if (present_success)
          list.add(success);
  
        return list.hashCode();
      }
  
      @Override
      public int compareTo(getQuickHogsAndMaybeRegister_result other) {
        if (!getClass().equals(other.getClass())) {
          return getClass().getName().compareTo(other.getClass().getName());
        }
  
        int lastComparison = 0;
  
        lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(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;
      }
  
      public _Fields fieldForId(int fieldId) {
        return _Fields.findByThriftId(fieldId);
      }
  
      public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
        schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
      }
  
      public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
        schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
        }
  
      @Override
      public String toString() {
        StringBuilder sb = new StringBuilder("getQuickHogsAndMaybeRegister_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, 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 getQuickHogsAndMaybeRegister_resultStandardSchemeFactory implements SchemeFactory {
        public getQuickHogsAndMaybeRegister_resultStandardScheme getScheme() {
          return new getQuickHogsAndMaybeRegister_resultStandardScheme();
        }
      }
  
      private static class getQuickHogsAndMaybeRegister_resultStandardScheme extends StandardScheme<getQuickHogsAndMaybeRegister_result> {
  
        public void read(org.apache.thrift.protocol.TProtocol iprot, getQuickHogsAndMaybeRegister_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 HogBugReport();
                  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, getQuickHogsAndMaybeRegister_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 getQuickHogsAndMaybeRegister_resultTupleSchemeFactory implements SchemeFactory {
        public getQuickHogsAndMaybeRegister_resultTupleScheme getScheme() {
          return new getQuickHogsAndMaybeRegister_resultTupleScheme();
        }
      }
  
      private static class getQuickHogsAndMaybeRegister_resultTupleScheme extends TupleScheme<getQuickHogsAndMaybeRegister_result> {
  
        @Override
        public void write(org.apache.thrift.protocol.TProtocol prot, getQuickHogsAndMaybeRegister_result struct) throws org.apache.thrift.TException {
          TTupleProtocol oprot = (TTupleProtocol) prot;
          BitSet optionals = new 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, getQuickHogsAndMaybeRegister_result struct) throws org.apache.thrift.TException {
          TTupleProtocol iprot = (TTupleProtocol) prot;
          BitSet incoming = iprot.readBitSet(1);
          if (incoming.get(0)) {
            struct.success = new HogBugReport();
            struct.success.read(iprot);
            struct.setSuccessIsSet(true);
          }
        }
      }
  
    }
  
  }
  