/**
 * Autogenerated by Thrift Compiler (0.9.1)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */
package org.apache.curator.generated;

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.protocol.TTupleProtocol;
import org.apache.thrift.protocol.TProtocolException;
import org.apache.thrift.EncodingUtils;
import org.apache.thrift.TException;
import org.apache.thrift.async.AsyncMethodCallback;
import org.apache.thrift.server.AbstractNonblockingServer.*;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import java.util.EnumMap;
import java.util.Set;
import java.util.HashSet;
import java.util.EnumSet;
import java.util.Collections;
import java.util.BitSet;
import java.nio.ByteBuffer;
import java.util.Arrays;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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

  private static final org.apache.thrift.protocol.TField TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("type", org.apache.thrift.protocol.TType.I32, (short)2);
  private static final org.apache.thrift.protocol.TField RESULT_CODE_FIELD_DESC = new org.apache.thrift.protocol.TField("resultCode", org.apache.thrift.protocol.TType.I32, (short)3);
  private static final org.apache.thrift.protocol.TField PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("path", org.apache.thrift.protocol.TType.STRING, (short)4);
  private static final org.apache.thrift.protocol.TField CONTEXT_FIELD_DESC = new org.apache.thrift.protocol.TField("context", org.apache.thrift.protocol.TType.STRING, (short)5);
  private static final org.apache.thrift.protocol.TField STAT_FIELD_DESC = new org.apache.thrift.protocol.TField("stat", org.apache.thrift.protocol.TType.STRUCT, (short)6);
  private static final org.apache.thrift.protocol.TField DATA_FIELD_DESC = new org.apache.thrift.protocol.TField("data", org.apache.thrift.protocol.TType.STRING, (short)7);
  private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("name", org.apache.thrift.protocol.TType.STRING, (short)8);
  private static final org.apache.thrift.protocol.TField CHILDREN_FIELD_DESC = new org.apache.thrift.protocol.TField("children", org.apache.thrift.protocol.TType.LIST, (short)9);
  private static final org.apache.thrift.protocol.TField ACL_LIST_FIELD_DESC = new org.apache.thrift.protocol.TField("aclList", org.apache.thrift.protocol.TType.LIST, (short)10);
  private static final org.apache.thrift.protocol.TField WATCHED_EVENT_FIELD_DESC = new org.apache.thrift.protocol.TField("watchedEvent", org.apache.thrift.protocol.TType.STRUCT, (short)11);
  private static final org.apache.thrift.protocol.TField LEADER_EVENT_FIELD_DESC = new org.apache.thrift.protocol.TField("leaderEvent", org.apache.thrift.protocol.TType.STRUCT, (short)12);
  private static final org.apache.thrift.protocol.TField CHILDREN_CACHE_EVENT_FIELD_DESC = new org.apache.thrift.protocol.TField("childrenCacheEvent", org.apache.thrift.protocol.TType.STRUCT, (short)13);

  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
  static {
    schemes.put(StandardScheme.class, new CuratorEventStandardSchemeFactory());
    schemes.put(TupleScheme.class, new CuratorEventTupleSchemeFactory());
  }

  /**
   * 
   * @see CuratorEventType
   */
  public CuratorEventType type; // required
  public int resultCode; // required
  public String path; // required
  public String context; // required
  public Stat stat; // required
  public ByteBuffer data; // required
  public String name; // required
  public List<String> children; // required
  public List<Acl> aclList; // required
  public WatchedEvent watchedEvent; // required
  public LeaderEvent leaderEvent; // required
  public PathChildrenCacheEvent childrenCacheEvent; // required

  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
    /**
     * 
     * @see CuratorEventType
     */
    TYPE((short)2, "type"),
    RESULT_CODE((short)3, "resultCode"),
    PATH((short)4, "path"),
    CONTEXT((short)5, "context"),
    STAT((short)6, "stat"),
    DATA((short)7, "data"),
    NAME((short)8, "name"),
    CHILDREN((short)9, "children"),
    ACL_LIST((short)10, "aclList"),
    WATCHED_EVENT((short)11, "watchedEvent"),
    LEADER_EVENT((short)12, "leaderEvent"),
    CHILDREN_CACHE_EVENT((short)13, "childrenCacheEvent");

    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 2: // TYPE
          return TYPE;
        case 3: // RESULT_CODE
          return RESULT_CODE;
        case 4: // PATH
          return PATH;
        case 5: // CONTEXT
          return CONTEXT;
        case 6: // STAT
          return STAT;
        case 7: // DATA
          return DATA;
        case 8: // NAME
          return NAME;
        case 9: // CHILDREN
          return CHILDREN;
        case 10: // ACL_LIST
          return ACL_LIST;
        case 11: // WATCHED_EVENT
          return WATCHED_EVENT;
        case 12: // LEADER_EVENT
          return LEADER_EVENT;
        case 13: // CHILDREN_CACHE_EVENT
          return CHILDREN_CACHE_EVENT;
        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 __RESULTCODE_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.TYPE, new org.apache.thrift.meta_data.FieldMetaData("type", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, CuratorEventType.class)));
    tmpMap.put(_Fields.RESULT_CODE, new org.apache.thrift.meta_data.FieldMetaData("resultCode", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
    tmpMap.put(_Fields.PATH, new org.apache.thrift.meta_data.FieldMetaData("path", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.CONTEXT, new org.apache.thrift.meta_data.FieldMetaData("context", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.STAT, new org.apache.thrift.meta_data.FieldMetaData("stat", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Stat.class)));
    tmpMap.put(_Fields.DATA, new org.apache.thrift.meta_data.FieldMetaData("data", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING        , true)));
    tmpMap.put(_Fields.NAME, new org.apache.thrift.meta_data.FieldMetaData("name", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.CHILDREN, new org.apache.thrift.meta_data.FieldMetaData("children", 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))));
    tmpMap.put(_Fields.ACL_LIST, new org.apache.thrift.meta_data.FieldMetaData("aclList", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Acl.class))));
    tmpMap.put(_Fields.WATCHED_EVENT, new org.apache.thrift.meta_data.FieldMetaData("watchedEvent", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, WatchedEvent.class)));
    tmpMap.put(_Fields.LEADER_EVENT, new org.apache.thrift.meta_data.FieldMetaData("leaderEvent", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, LeaderEvent.class)));
    tmpMap.put(_Fields.CHILDREN_CACHE_EVENT, new org.apache.thrift.meta_data.FieldMetaData("childrenCacheEvent", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, PathChildrenCacheEvent.class)));
    metaDataMap = Collections.unmodifiableMap(tmpMap);
    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(CuratorEvent.class, metaDataMap);
  }

  public CuratorEvent() {
  }

  public CuratorEvent(
    CuratorEventType type,
    int resultCode,
    String path,
    String context,
    Stat stat,
    ByteBuffer data,
    String name,
    List<String> children,
    List<Acl> aclList,
    WatchedEvent watchedEvent,
    LeaderEvent leaderEvent,
    PathChildrenCacheEvent childrenCacheEvent)
  {
    this();
    this.type = type;
    this.resultCode = resultCode;
    setResultCodeIsSet(true);
    this.path = path;
    this.context = context;
    this.stat = stat;
    this.data = data;
    this.name = name;
    this.children = children;
    this.aclList = aclList;
    this.watchedEvent = watchedEvent;
    this.leaderEvent = leaderEvent;
    this.childrenCacheEvent = childrenCacheEvent;
  }

  /**
   * Performs a deep copy on <i>other</i>.
   */
  public CuratorEvent(CuratorEvent other) {
    __isset_bitfield = other.__isset_bitfield;
    if (other.isSetType()) {
      this.type = other.type;
    }
    this.resultCode = other.resultCode;
    if (other.isSetPath()) {
      this.path = other.path;
    }
    if (other.isSetContext()) {
      this.context = other.context;
    }
    if (other.isSetStat()) {
      this.stat = new Stat(other.stat);
    }
    if (other.isSetData()) {
      this.data = org.apache.thrift.TBaseHelper.copyBinary(other.data);
;
    }
    if (other.isSetName()) {
      this.name = other.name;
    }
    if (other.isSetChildren()) {
      List<String> __this__children = new ArrayList<String>(other.children);
      this.children = __this__children;
    }
    if (other.isSetAclList()) {
      List<Acl> __this__aclList = new ArrayList<Acl>(other.aclList.size());
      for (Acl other_element : other.aclList) {
        __this__aclList.add(new Acl(other_element));
      }
      this.aclList = __this__aclList;
    }
    if (other.isSetWatchedEvent()) {
      this.watchedEvent = new WatchedEvent(other.watchedEvent);
    }
    if (other.isSetLeaderEvent()) {
      this.leaderEvent = new LeaderEvent(other.leaderEvent);
    }
    if (other.isSetChildrenCacheEvent()) {
      this.childrenCacheEvent = new PathChildrenCacheEvent(other.childrenCacheEvent);
    }
  }

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

  @Override
  public void clear() {
    this.type = null;
    setResultCodeIsSet(false);
    this.resultCode = 0;
    this.path = null;
    this.context = null;
    this.stat = null;
    this.data = null;
    this.name = null;
    this.children = null;
    this.aclList = null;
    this.watchedEvent = null;
    this.leaderEvent = null;
    this.childrenCacheEvent = null;
  }

  /**
   * 
   * @see CuratorEventType
   */
  public CuratorEventType getType() {
    return this.type;
  }

  /**
   * 
   * @see CuratorEventType
   */
  public CuratorEvent setType(CuratorEventType type) {
    this.type = type;
    return this;
  }

  public void unsetType() {
    this.type = null;
  }

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

  public void setTypeIsSet(boolean value) {
    if (!value) {
      this.type = null;
    }
  }

  public int getResultCode() {
    return this.resultCode;
  }

  public CuratorEvent setResultCode(int resultCode) {
    this.resultCode = resultCode;
    setResultCodeIsSet(true);
    return this;
  }

  public void unsetResultCode() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __RESULTCODE_ISSET_ID);
  }

  /** Returns true if field resultCode is set (has been assigned a value) and false otherwise */
  public boolean isSetResultCode() {
    return EncodingUtils.testBit(__isset_bitfield, __RESULTCODE_ISSET_ID);
  }

  public void setResultCodeIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __RESULTCODE_ISSET_ID, value);
  }

  public String getPath() {
    return this.path;
  }

  public CuratorEvent setPath(String path) {
    this.path = path;
    return this;
  }

  public void unsetPath() {
    this.path = null;
  }

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

  public void setPathIsSet(boolean value) {
    if (!value) {
      this.path = null;
    }
  }

  public String getContext() {
    return this.context;
  }

  public CuratorEvent setContext(String context) {
    this.context = context;
    return this;
  }

  public void unsetContext() {
    this.context = null;
  }

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

  public void setContextIsSet(boolean value) {
    if (!value) {
      this.context = null;
    }
  }

  public Stat getStat() {
    return this.stat;
  }

  public CuratorEvent setStat(Stat stat) {
    this.stat = stat;
    return this;
  }

  public void unsetStat() {
    this.stat = null;
  }

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

  public void setStatIsSet(boolean value) {
    if (!value) {
      this.stat = null;
    }
  }

  public byte[] getData() {
    setData(org.apache.thrift.TBaseHelper.rightSize(data));
    return data == null ? null : data.array();
  }

  public ByteBuffer bufferForData() {
    return data;
  }

  public CuratorEvent setData(byte[] data) {
    setData(data == null ? (ByteBuffer)null : ByteBuffer.wrap(data));
    return this;
  }

  public CuratorEvent setData(ByteBuffer data) {
    this.data = data;
    return this;
  }

  public void unsetData() {
    this.data = null;
  }

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

  public void setDataIsSet(boolean value) {
    if (!value) {
      this.data = null;
    }
  }

  public String getName() {
    return this.name;
  }

  public CuratorEvent setName(String name) {
    this.name = name;
    return this;
  }

  public void unsetName() {
    this.name = null;
  }

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

  public void setNameIsSet(boolean value) {
    if (!value) {
      this.name = null;
    }
  }

  public int getChildrenSize() {
    return (this.children == null) ? 0 : this.children.size();
  }

  public java.util.Iterator<String> getChildrenIterator() {
    return (this.children == null) ? null : this.children.iterator();
  }

  public void addToChildren(String elem) {
    if (this.children == null) {
      this.children = new ArrayList<String>();
    }
    this.children.add(elem);
  }

  public List<String> getChildren() {
    return this.children;
  }

  public CuratorEvent setChildren(List<String> children) {
    this.children = children;
    return this;
  }

  public void unsetChildren() {
    this.children = null;
  }

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

  public void setChildrenIsSet(boolean value) {
    if (!value) {
      this.children = null;
    }
  }

  public int getAclListSize() {
    return (this.aclList == null) ? 0 : this.aclList.size();
  }

  public java.util.Iterator<Acl> getAclListIterator() {
    return (this.aclList == null) ? null : this.aclList.iterator();
  }

  public void addToAclList(Acl elem) {
    if (this.aclList == null) {
      this.aclList = new ArrayList<Acl>();
    }
    this.aclList.add(elem);
  }

  public List<Acl> getAclList() {
    return this.aclList;
  }

  public CuratorEvent setAclList(List<Acl> aclList) {
    this.aclList = aclList;
    return this;
  }

  public void unsetAclList() {
    this.aclList = null;
  }

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

  public void setAclListIsSet(boolean value) {
    if (!value) {
      this.aclList = null;
    }
  }

  public WatchedEvent getWatchedEvent() {
    return this.watchedEvent;
  }

  public CuratorEvent setWatchedEvent(WatchedEvent watchedEvent) {
    this.watchedEvent = watchedEvent;
    return this;
  }

  public void unsetWatchedEvent() {
    this.watchedEvent = null;
  }

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

  public void setWatchedEventIsSet(boolean value) {
    if (!value) {
      this.watchedEvent = null;
    }
  }

  public LeaderEvent getLeaderEvent() {
    return this.leaderEvent;
  }

  public CuratorEvent setLeaderEvent(LeaderEvent leaderEvent) {
    this.leaderEvent = leaderEvent;
    return this;
  }

  public void unsetLeaderEvent() {
    this.leaderEvent = null;
  }

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

  public void setLeaderEventIsSet(boolean value) {
    if (!value) {
      this.leaderEvent = null;
    }
  }

  public PathChildrenCacheEvent getChildrenCacheEvent() {
    return this.childrenCacheEvent;
  }

  public CuratorEvent setChildrenCacheEvent(PathChildrenCacheEvent childrenCacheEvent) {
    this.childrenCacheEvent = childrenCacheEvent;
    return this;
  }

  public void unsetChildrenCacheEvent() {
    this.childrenCacheEvent = null;
  }

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

  public void setChildrenCacheEventIsSet(boolean value) {
    if (!value) {
      this.childrenCacheEvent = null;
    }
  }

  public void setFieldValue(_Fields field, Object value) {
    switch (field) {
    case TYPE:
      if (value == null) {
        unsetType();
      } else {
        setType((CuratorEventType)value);
      }
      break;

    case RESULT_CODE:
      if (value == null) {
        unsetResultCode();
      } else {
        setResultCode((Integer)value);
      }
      break;

    case PATH:
      if (value == null) {
        unsetPath();
      } else {
        setPath((String)value);
      }
      break;

    case CONTEXT:
      if (value == null) {
        unsetContext();
      } else {
        setContext((String)value);
      }
      break;

    case STAT:
      if (value == null) {
        unsetStat();
      } else {
        setStat((Stat)value);
      }
      break;

    case DATA:
      if (value == null) {
        unsetData();
      } else {
        setData((ByteBuffer)value);
      }
      break;

    case NAME:
      if (value == null) {
        unsetName();
      } else {
        setName((String)value);
      }
      break;

    case CHILDREN:
      if (value == null) {
        unsetChildren();
      } else {
        setChildren((List<String>)value);
      }
      break;

    case ACL_LIST:
      if (value == null) {
        unsetAclList();
      } else {
        setAclList((List<Acl>)value);
      }
      break;

    case WATCHED_EVENT:
      if (value == null) {
        unsetWatchedEvent();
      } else {
        setWatchedEvent((WatchedEvent)value);
      }
      break;

    case LEADER_EVENT:
      if (value == null) {
        unsetLeaderEvent();
      } else {
        setLeaderEvent((LeaderEvent)value);
      }
      break;

    case CHILDREN_CACHE_EVENT:
      if (value == null) {
        unsetChildrenCacheEvent();
      } else {
        setChildrenCacheEvent((PathChildrenCacheEvent)value);
      }
      break;

    }
  }

  public Object getFieldValue(_Fields field) {
    switch (field) {
    case TYPE:
      return getType();

    case RESULT_CODE:
      return Integer.valueOf(getResultCode());

    case PATH:
      return getPath();

    case CONTEXT:
      return getContext();

    case STAT:
      return getStat();

    case DATA:
      return getData();

    case NAME:
      return getName();

    case CHILDREN:
      return getChildren();

    case ACL_LIST:
      return getAclList();

    case WATCHED_EVENT:
      return getWatchedEvent();

    case LEADER_EVENT:
      return getLeaderEvent();

    case CHILDREN_CACHE_EVENT:
      return getChildrenCacheEvent();

    }
    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 TYPE:
      return isSetType();
    case RESULT_CODE:
      return isSetResultCode();
    case PATH:
      return isSetPath();
    case CONTEXT:
      return isSetContext();
    case STAT:
      return isSetStat();
    case DATA:
      return isSetData();
    case NAME:
      return isSetName();
    case CHILDREN:
      return isSetChildren();
    case ACL_LIST:
      return isSetAclList();
    case WATCHED_EVENT:
      return isSetWatchedEvent();
    case LEADER_EVENT:
      return isSetLeaderEvent();
    case CHILDREN_CACHE_EVENT:
      return isSetChildrenCacheEvent();
    }
    throw new IllegalStateException();
  }

  @Override
  public boolean equals(Object that) {
    if (that == null)
      return false;
    if (that instanceof CuratorEvent)
      return this.equals((CuratorEvent)that);
    return false;
  }

  public boolean equals(CuratorEvent that) {
    if (that == null)
      return false;

    boolean this_present_type = true && this.isSetType();
    boolean that_present_type = true && that.isSetType();
    if (this_present_type || that_present_type) {
      if (!(this_present_type && that_present_type))
        return false;
      if (!this.type.equals(that.type))
        return false;
    }

    boolean this_present_resultCode = true;
    boolean that_present_resultCode = true;
    if (this_present_resultCode || that_present_resultCode) {
      if (!(this_present_resultCode && that_present_resultCode))
        return false;
      if (this.resultCode != that.resultCode)
        return false;
    }

    boolean this_present_path = true && this.isSetPath();
    boolean that_present_path = true && that.isSetPath();
    if (this_present_path || that_present_path) {
      if (!(this_present_path && that_present_path))
        return false;
      if (!this.path.equals(that.path))
        return false;
    }

    boolean this_present_context = true && this.isSetContext();
    boolean that_present_context = true && that.isSetContext();
    if (this_present_context || that_present_context) {
      if (!(this_present_context && that_present_context))
        return false;
      if (!this.context.equals(that.context))
        return false;
    }

    boolean this_present_stat = true && this.isSetStat();
    boolean that_present_stat = true && that.isSetStat();
    if (this_present_stat || that_present_stat) {
      if (!(this_present_stat && that_present_stat))
        return false;
      if (!this.stat.equals(that.stat))
        return false;
    }

    boolean this_present_data = true && this.isSetData();
    boolean that_present_data = true && that.isSetData();
    if (this_present_data || that_present_data) {
      if (!(this_present_data && that_present_data))
        return false;
      if (!this.data.equals(that.data))
        return false;
    }

    boolean this_present_name = true && this.isSetName();
    boolean that_present_name = true && that.isSetName();
    if (this_present_name || that_present_name) {
      if (!(this_present_name && that_present_name))
        return false;
      if (!this.name.equals(that.name))
        return false;
    }

    boolean this_present_children = true && this.isSetChildren();
    boolean that_present_children = true && that.isSetChildren();
    if (this_present_children || that_present_children) {
      if (!(this_present_children && that_present_children))
        return false;
      if (!this.children.equals(that.children))
        return false;
    }

    boolean this_present_aclList = true && this.isSetAclList();
    boolean that_present_aclList = true && that.isSetAclList();
    if (this_present_aclList || that_present_aclList) {
      if (!(this_present_aclList && that_present_aclList))
        return false;
      if (!this.aclList.equals(that.aclList))
        return false;
    }

    boolean this_present_watchedEvent = true && this.isSetWatchedEvent();
    boolean that_present_watchedEvent = true && that.isSetWatchedEvent();
    if (this_present_watchedEvent || that_present_watchedEvent) {
      if (!(this_present_watchedEvent && that_present_watchedEvent))
        return false;
      if (!this.watchedEvent.equals(that.watchedEvent))
        return false;
    }

    boolean this_present_leaderEvent = true && this.isSetLeaderEvent();
    boolean that_present_leaderEvent = true && that.isSetLeaderEvent();
    if (this_present_leaderEvent || that_present_leaderEvent) {
      if (!(this_present_leaderEvent && that_present_leaderEvent))
        return false;
      if (!this.leaderEvent.equals(that.leaderEvent))
        return false;
    }

    boolean this_present_childrenCacheEvent = true && this.isSetChildrenCacheEvent();
    boolean that_present_childrenCacheEvent = true && that.isSetChildrenCacheEvent();
    if (this_present_childrenCacheEvent || that_present_childrenCacheEvent) {
      if (!(this_present_childrenCacheEvent && that_present_childrenCacheEvent))
        return false;
      if (!this.childrenCacheEvent.equals(that.childrenCacheEvent))
        return false;
    }

    return true;
  }

  @Override
  public int hashCode() {
    return 0;
  }

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

    int lastComparison = 0;

    lastComparison = Boolean.valueOf(isSetType()).compareTo(other.isSetType());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetType()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.type, other.type);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetResultCode()).compareTo(other.isSetResultCode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetResultCode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.resultCode, other.resultCode);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetPath()).compareTo(other.isSetPath());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetPath()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.path, other.path);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetContext()).compareTo(other.isSetContext());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetContext()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.context, other.context);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetStat()).compareTo(other.isSetStat());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetStat()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.stat, other.stat);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetData()).compareTo(other.isSetData());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetData()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.data, other.data);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetName()).compareTo(other.isSetName());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetName()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.name, other.name);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetChildren()).compareTo(other.isSetChildren());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetChildren()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.children, other.children);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetAclList()).compareTo(other.isSetAclList());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetAclList()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.aclList, other.aclList);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetWatchedEvent()).compareTo(other.isSetWatchedEvent());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetWatchedEvent()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.watchedEvent, other.watchedEvent);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetLeaderEvent()).compareTo(other.isSetLeaderEvent());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetLeaderEvent()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.leaderEvent, other.leaderEvent);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetChildrenCacheEvent()).compareTo(other.isSetChildrenCacheEvent());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetChildrenCacheEvent()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.childrenCacheEvent, other.childrenCacheEvent);
      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("CuratorEvent(");
    boolean first = true;

    sb.append("type:");
    if (this.type == null) {
      sb.append("null");
    } else {
      sb.append(this.type);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("resultCode:");
    sb.append(this.resultCode);
    first = false;
    if (!first) sb.append(", ");
    sb.append("path:");
    if (this.path == null) {
      sb.append("null");
    } else {
      sb.append(this.path);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("context:");
    if (this.context == null) {
      sb.append("null");
    } else {
      sb.append(this.context);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("stat:");
    if (this.stat == null) {
      sb.append("null");
    } else {
      sb.append(this.stat);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("data:");
    if (this.data == null) {
      sb.append("null");
    } else {
      org.apache.thrift.TBaseHelper.toString(this.data, sb);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("name:");
    if (this.name == null) {
      sb.append("null");
    } else {
      sb.append(this.name);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("children:");
    if (this.children == null) {
      sb.append("null");
    } else {
      sb.append(this.children);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("aclList:");
    if (this.aclList == null) {
      sb.append("null");
    } else {
      sb.append(this.aclList);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("watchedEvent:");
    if (this.watchedEvent == null) {
      sb.append("null");
    } else {
      sb.append(this.watchedEvent);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("leaderEvent:");
    if (this.leaderEvent == null) {
      sb.append("null");
    } else {
      sb.append(this.leaderEvent);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("childrenCacheEvent:");
    if (this.childrenCacheEvent == null) {
      sb.append("null");
    } else {
      sb.append(this.childrenCacheEvent);
    }
    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 (stat != null) {
      stat.validate();
    }
    if (watchedEvent != null) {
      watchedEvent.validate();
    }
    if (leaderEvent != null) {
      leaderEvent.validate();
    }
    if (childrenCacheEvent != null) {
      childrenCacheEvent.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 {
      // 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 CuratorEventStandardSchemeFactory implements SchemeFactory {
    public CuratorEventStandardScheme getScheme() {
      return new CuratorEventStandardScheme();
    }
  }

  private static class CuratorEventStandardScheme extends StandardScheme<CuratorEvent> {

    public void read(org.apache.thrift.protocol.TProtocol iprot, CuratorEvent 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 2: // TYPE
            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
              struct.type = CuratorEventType.findByValue(iprot.readI32());
              struct.setTypeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 3: // RESULT_CODE
            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
              struct.resultCode = iprot.readI32();
              struct.setResultCodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 4: // PATH
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.path = iprot.readString();
              struct.setPathIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 5: // CONTEXT
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.context = iprot.readString();
              struct.setContextIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 6: // STAT
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.stat = new Stat();
              struct.stat.read(iprot);
              struct.setStatIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 7: // DATA
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.data = iprot.readBinary();
              struct.setDataIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 8: // NAME
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.name = iprot.readString();
              struct.setNameIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 9: // CHILDREN
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list8 = iprot.readListBegin();
                struct.children = new ArrayList<String>(_list8.size);
                for (int _i9 = 0; _i9 < _list8.size; ++_i9)
                {
                  String _elem10;
                  _elem10 = iprot.readString();
                  struct.children.add(_elem10);
                }
                iprot.readListEnd();
              }
              struct.setChildrenIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 10: // ACL_LIST
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list11 = iprot.readListBegin();
                struct.aclList = new ArrayList<Acl>(_list11.size);
                for (int _i12 = 0; _i12 < _list11.size; ++_i12)
                {
                  Acl _elem13;
                  _elem13 = new Acl();
                  _elem13.read(iprot);
                  struct.aclList.add(_elem13);
                }
                iprot.readListEnd();
              }
              struct.setAclListIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 11: // WATCHED_EVENT
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.watchedEvent = new WatchedEvent();
              struct.watchedEvent.read(iprot);
              struct.setWatchedEventIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 12: // LEADER_EVENT
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.leaderEvent = new LeaderEvent();
              struct.leaderEvent.read(iprot);
              struct.setLeaderEventIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 13: // CHILDREN_CACHE_EVENT
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.childrenCacheEvent = new PathChildrenCacheEvent();
              struct.childrenCacheEvent.read(iprot);
              struct.setChildrenCacheEventIsSet(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, CuratorEvent struct) throws org.apache.thrift.TException {
      struct.validate();

      oprot.writeStructBegin(STRUCT_DESC);
      if (struct.type != null) {
        oprot.writeFieldBegin(TYPE_FIELD_DESC);
        oprot.writeI32(struct.type.getValue());
        oprot.writeFieldEnd();
      }
      oprot.writeFieldBegin(RESULT_CODE_FIELD_DESC);
      oprot.writeI32(struct.resultCode);
      oprot.writeFieldEnd();
      if (struct.path != null) {
        oprot.writeFieldBegin(PATH_FIELD_DESC);
        oprot.writeString(struct.path);
        oprot.writeFieldEnd();
      }
      if (struct.context != null) {
        oprot.writeFieldBegin(CONTEXT_FIELD_DESC);
        oprot.writeString(struct.context);
        oprot.writeFieldEnd();
      }
      if (struct.stat != null) {
        oprot.writeFieldBegin(STAT_FIELD_DESC);
        struct.stat.write(oprot);
        oprot.writeFieldEnd();
      }
      if (struct.data != null) {
        oprot.writeFieldBegin(DATA_FIELD_DESC);
        oprot.writeBinary(struct.data);
        oprot.writeFieldEnd();
      }
      if (struct.name != null) {
        oprot.writeFieldBegin(NAME_FIELD_DESC);
        oprot.writeString(struct.name);
        oprot.writeFieldEnd();
      }
      if (struct.children != null) {
        oprot.writeFieldBegin(CHILDREN_FIELD_DESC);
        {
          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.children.size()));
          for (String _iter14 : struct.children)
          {
            oprot.writeString(_iter14);
          }
          oprot.writeListEnd();
        }
        oprot.writeFieldEnd();
      }
      if (struct.aclList != null) {
        oprot.writeFieldBegin(ACL_LIST_FIELD_DESC);
        {
          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.aclList.size()));
          for (Acl _iter15 : struct.aclList)
          {
            _iter15.write(oprot);
          }
          oprot.writeListEnd();
        }
        oprot.writeFieldEnd();
      }
      if (struct.watchedEvent != null) {
        oprot.writeFieldBegin(WATCHED_EVENT_FIELD_DESC);
        struct.watchedEvent.write(oprot);
        oprot.writeFieldEnd();
      }
      if (struct.leaderEvent != null) {
        oprot.writeFieldBegin(LEADER_EVENT_FIELD_DESC);
        struct.leaderEvent.write(oprot);
        oprot.writeFieldEnd();
      }
      if (struct.childrenCacheEvent != null) {
        oprot.writeFieldBegin(CHILDREN_CACHE_EVENT_FIELD_DESC);
        struct.childrenCacheEvent.write(oprot);
        oprot.writeFieldEnd();
      }
      oprot.writeFieldStop();
      oprot.writeStructEnd();
    }

  }

  private static class CuratorEventTupleSchemeFactory implements SchemeFactory {
    public CuratorEventTupleScheme getScheme() {
      return new CuratorEventTupleScheme();
    }
  }

  private static class CuratorEventTupleScheme extends TupleScheme<CuratorEvent> {

    @Override
    public void write(org.apache.thrift.protocol.TProtocol prot, CuratorEvent struct) throws org.apache.thrift.TException {
      TTupleProtocol oprot = (TTupleProtocol) prot;
      BitSet optionals = new BitSet();
      if (struct.isSetType()) {
        optionals.set(0);
      }
      if (struct.isSetResultCode()) {
        optionals.set(1);
      }
      if (struct.isSetPath()) {
        optionals.set(2);
      }
      if (struct.isSetContext()) {
        optionals.set(3);
      }
      if (struct.isSetStat()) {
        optionals.set(4);
      }
      if (struct.isSetData()) {
        optionals.set(5);
      }
      if (struct.isSetName()) {
        optionals.set(6);
      }
      if (struct.isSetChildren()) {
        optionals.set(7);
      }
      if (struct.isSetAclList()) {
        optionals.set(8);
      }
      if (struct.isSetWatchedEvent()) {
        optionals.set(9);
      }
      if (struct.isSetLeaderEvent()) {
        optionals.set(10);
      }
      if (struct.isSetChildrenCacheEvent()) {
        optionals.set(11);
      }
      oprot.writeBitSet(optionals, 12);
      if (struct.isSetType()) {
        oprot.writeI32(struct.type.getValue());
      }
      if (struct.isSetResultCode()) {
        oprot.writeI32(struct.resultCode);
      }
      if (struct.isSetPath()) {
        oprot.writeString(struct.path);
      }
      if (struct.isSetContext()) {
        oprot.writeString(struct.context);
      }
      if (struct.isSetStat()) {
        struct.stat.write(oprot);
      }
      if (struct.isSetData()) {
        oprot.writeBinary(struct.data);
      }
      if (struct.isSetName()) {
        oprot.writeString(struct.name);
      }
      if (struct.isSetChildren()) {
        {
          oprot.writeI32(struct.children.size());
          for (String _iter16 : struct.children)
          {
            oprot.writeString(_iter16);
          }
        }
      }
      if (struct.isSetAclList()) {
        {
          oprot.writeI32(struct.aclList.size());
          for (Acl _iter17 : struct.aclList)
          {
            _iter17.write(oprot);
          }
        }
      }
      if (struct.isSetWatchedEvent()) {
        struct.watchedEvent.write(oprot);
      }
      if (struct.isSetLeaderEvent()) {
        struct.leaderEvent.write(oprot);
      }
      if (struct.isSetChildrenCacheEvent()) {
        struct.childrenCacheEvent.write(oprot);
      }
    }

    @Override
    public void read(org.apache.thrift.protocol.TProtocol prot, CuratorEvent struct) throws org.apache.thrift.TException {
      TTupleProtocol iprot = (TTupleProtocol) prot;
      BitSet incoming = iprot.readBitSet(12);
      if (incoming.get(0)) {
        struct.type = CuratorEventType.findByValue(iprot.readI32());
        struct.setTypeIsSet(true);
      }
      if (incoming.get(1)) {
        struct.resultCode = iprot.readI32();
        struct.setResultCodeIsSet(true);
      }
      if (incoming.get(2)) {
        struct.path = iprot.readString();
        struct.setPathIsSet(true);
      }
      if (incoming.get(3)) {
        struct.context = iprot.readString();
        struct.setContextIsSet(true);
      }
      if (incoming.get(4)) {
        struct.stat = new Stat();
        struct.stat.read(iprot);
        struct.setStatIsSet(true);
      }
      if (incoming.get(5)) {
        struct.data = iprot.readBinary();
        struct.setDataIsSet(true);
      }
      if (incoming.get(6)) {
        struct.name = iprot.readString();
        struct.setNameIsSet(true);
      }
      if (incoming.get(7)) {
        {
          org.apache.thrift.protocol.TList _list18 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
          struct.children = new ArrayList<String>(_list18.size);
          for (int _i19 = 0; _i19 < _list18.size; ++_i19)
          {
            String _elem20;
            _elem20 = iprot.readString();
            struct.children.add(_elem20);
          }
        }
        struct.setChildrenIsSet(true);
      }
      if (incoming.get(8)) {
        {
          org.apache.thrift.protocol.TList _list21 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
          struct.aclList = new ArrayList<Acl>(_list21.size);
          for (int _i22 = 0; _i22 < _list21.size; ++_i22)
          {
            Acl _elem23;
            _elem23 = new Acl();
            _elem23.read(iprot);
            struct.aclList.add(_elem23);
          }
        }
        struct.setAclListIsSet(true);
      }
      if (incoming.get(9)) {
        struct.watchedEvent = new WatchedEvent();
        struct.watchedEvent.read(iprot);
        struct.setWatchedEventIsSet(true);
      }
      if (incoming.get(10)) {
        struct.leaderEvent = new LeaderEvent();
        struct.leaderEvent.read(iprot);
        struct.setLeaderEventIsSet(true);
      }
      if (incoming.get(11)) {
        struct.childrenCacheEvent = new PathChildrenCacheEvent();
        struct.childrenCacheEvent.read(iprot);
        struct.setChildrenCacheEventIsSet(true);
      }
    }
  }

}

