/**
 * 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 Stat implements org.apache.thrift.TBase<Stat, Stat._Fields>, java.io.Serializable, Cloneable, Comparable<Stat> {
  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Stat");

  private static final org.apache.thrift.protocol.TField CZXID_FIELD_DESC = new org.apache.thrift.protocol.TField("czxid", org.apache.thrift.protocol.TType.I64, (short)1);
  private static final org.apache.thrift.protocol.TField MZXID_FIELD_DESC = new org.apache.thrift.protocol.TField("mzxid", org.apache.thrift.protocol.TType.I64, (short)2);
  private static final org.apache.thrift.protocol.TField CTIME_FIELD_DESC = new org.apache.thrift.protocol.TField("ctime", org.apache.thrift.protocol.TType.I64, (short)3);
  private static final org.apache.thrift.protocol.TField MTIME_FIELD_DESC = new org.apache.thrift.protocol.TField("mtime", org.apache.thrift.protocol.TType.I64, (short)4);
  private static final org.apache.thrift.protocol.TField VERSION_FIELD_DESC = new org.apache.thrift.protocol.TField("version", org.apache.thrift.protocol.TType.I32, (short)5);
  private static final org.apache.thrift.protocol.TField CVERSION_FIELD_DESC = new org.apache.thrift.protocol.TField("cversion", org.apache.thrift.protocol.TType.I32, (short)6);
  private static final org.apache.thrift.protocol.TField AVERSION_FIELD_DESC = new org.apache.thrift.protocol.TField("aversion", org.apache.thrift.protocol.TType.I32, (short)7);
  private static final org.apache.thrift.protocol.TField EPHEMERAL_OWNER_FIELD_DESC = new org.apache.thrift.protocol.TField("ephemeralOwner", org.apache.thrift.protocol.TType.I64, (short)8);
  private static final org.apache.thrift.protocol.TField DATA_LENGTH_FIELD_DESC = new org.apache.thrift.protocol.TField("dataLength", org.apache.thrift.protocol.TType.I32, (short)9);
  private static final org.apache.thrift.protocol.TField NUM_CHILDREN_FIELD_DESC = new org.apache.thrift.protocol.TField("numChildren", org.apache.thrift.protocol.TType.I32, (short)10);
  private static final org.apache.thrift.protocol.TField PZXID_FIELD_DESC = new org.apache.thrift.protocol.TField("pzxid", org.apache.thrift.protocol.TType.I64, (short)11);

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

  public long czxid; // required
  public long mzxid; // required
  public long ctime; // required
  public long mtime; // required
  public int version; // required
  public int cversion; // required
  public int aversion; // required
  public long ephemeralOwner; // required
  public int dataLength; // required
  public int numChildren; // required
  public long pzxid; // 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 {
    CZXID((short)1, "czxid"),
    MZXID((short)2, "mzxid"),
    CTIME((short)3, "ctime"),
    MTIME((short)4, "mtime"),
    VERSION((short)5, "version"),
    CVERSION((short)6, "cversion"),
    AVERSION((short)7, "aversion"),
    EPHEMERAL_OWNER((short)8, "ephemeralOwner"),
    DATA_LENGTH((short)9, "dataLength"),
    NUM_CHILDREN((short)10, "numChildren"),
    PZXID((short)11, "pzxid");

    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: // CZXID
          return CZXID;
        case 2: // MZXID
          return MZXID;
        case 3: // CTIME
          return CTIME;
        case 4: // MTIME
          return MTIME;
        case 5: // VERSION
          return VERSION;
        case 6: // CVERSION
          return CVERSION;
        case 7: // AVERSION
          return AVERSION;
        case 8: // EPHEMERAL_OWNER
          return EPHEMERAL_OWNER;
        case 9: // DATA_LENGTH
          return DATA_LENGTH;
        case 10: // NUM_CHILDREN
          return NUM_CHILDREN;
        case 11: // PZXID
          return PZXID;
        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 __CZXID_ISSET_ID = 0;
  private static final int __MZXID_ISSET_ID = 1;
  private static final int __CTIME_ISSET_ID = 2;
  private static final int __MTIME_ISSET_ID = 3;
  private static final int __VERSION_ISSET_ID = 4;
  private static final int __CVERSION_ISSET_ID = 5;
  private static final int __AVERSION_ISSET_ID = 6;
  private static final int __EPHEMERALOWNER_ISSET_ID = 7;
  private static final int __DATALENGTH_ISSET_ID = 8;
  private static final int __NUMCHILDREN_ISSET_ID = 9;
  private static final int __PZXID_ISSET_ID = 10;
  private short __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.CZXID, new org.apache.thrift.meta_data.FieldMetaData("czxid", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.MZXID, new org.apache.thrift.meta_data.FieldMetaData("mzxid", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.CTIME, new org.apache.thrift.meta_data.FieldMetaData("ctime", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.MTIME, new org.apache.thrift.meta_data.FieldMetaData("mtime", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.VERSION, new org.apache.thrift.meta_data.FieldMetaData("version", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
    tmpMap.put(_Fields.CVERSION, new org.apache.thrift.meta_data.FieldMetaData("cversion", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
    tmpMap.put(_Fields.AVERSION, new org.apache.thrift.meta_data.FieldMetaData("aversion", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
    tmpMap.put(_Fields.EPHEMERAL_OWNER, new org.apache.thrift.meta_data.FieldMetaData("ephemeralOwner", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.DATA_LENGTH, new org.apache.thrift.meta_data.FieldMetaData("dataLength", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
    tmpMap.put(_Fields.NUM_CHILDREN, new org.apache.thrift.meta_data.FieldMetaData("numChildren", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
    tmpMap.put(_Fields.PZXID, new org.apache.thrift.meta_data.FieldMetaData("pzxid", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    metaDataMap = Collections.unmodifiableMap(tmpMap);
    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(Stat.class, metaDataMap);
  }

  public Stat() {
  }

  public Stat(
    long czxid,
    long mzxid,
    long ctime,
    long mtime,
    int version,
    int cversion,
    int aversion,
    long ephemeralOwner,
    int dataLength,
    int numChildren,
    long pzxid)
  {
    this();
    this.czxid = czxid;
    setCzxidIsSet(true);
    this.mzxid = mzxid;
    setMzxidIsSet(true);
    this.ctime = ctime;
    setCtimeIsSet(true);
    this.mtime = mtime;
    setMtimeIsSet(true);
    this.version = version;
    setVersionIsSet(true);
    this.cversion = cversion;
    setCversionIsSet(true);
    this.aversion = aversion;
    setAversionIsSet(true);
    this.ephemeralOwner = ephemeralOwner;
    setEphemeralOwnerIsSet(true);
    this.dataLength = dataLength;
    setDataLengthIsSet(true);
    this.numChildren = numChildren;
    setNumChildrenIsSet(true);
    this.pzxid = pzxid;
    setPzxidIsSet(true);
  }

  /**
   * Performs a deep copy on <i>other</i>.
   */
  public Stat(Stat other) {
    __isset_bitfield = other.__isset_bitfield;
    this.czxid = other.czxid;
    this.mzxid = other.mzxid;
    this.ctime = other.ctime;
    this.mtime = other.mtime;
    this.version = other.version;
    this.cversion = other.cversion;
    this.aversion = other.aversion;
    this.ephemeralOwner = other.ephemeralOwner;
    this.dataLength = other.dataLength;
    this.numChildren = other.numChildren;
    this.pzxid = other.pzxid;
  }

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

  @Override
  public void clear() {
    setCzxidIsSet(false);
    this.czxid = 0;
    setMzxidIsSet(false);
    this.mzxid = 0;
    setCtimeIsSet(false);
    this.ctime = 0;
    setMtimeIsSet(false);
    this.mtime = 0;
    setVersionIsSet(false);
    this.version = 0;
    setCversionIsSet(false);
    this.cversion = 0;
    setAversionIsSet(false);
    this.aversion = 0;
    setEphemeralOwnerIsSet(false);
    this.ephemeralOwner = 0;
    setDataLengthIsSet(false);
    this.dataLength = 0;
    setNumChildrenIsSet(false);
    this.numChildren = 0;
    setPzxidIsSet(false);
    this.pzxid = 0;
  }

  public long getCzxid() {
    return this.czxid;
  }

  public Stat setCzxid(long czxid) {
    this.czxid = czxid;
    setCzxidIsSet(true);
    return this;
  }

  public void unsetCzxid() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __CZXID_ISSET_ID);
  }

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

  public void setCzxidIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __CZXID_ISSET_ID, value);
  }

  public long getMzxid() {
    return this.mzxid;
  }

  public Stat setMzxid(long mzxid) {
    this.mzxid = mzxid;
    setMzxidIsSet(true);
    return this;
  }

  public void unsetMzxid() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __MZXID_ISSET_ID);
  }

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

  public void setMzxidIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __MZXID_ISSET_ID, value);
  }

  public long getCtime() {
    return this.ctime;
  }

  public Stat setCtime(long ctime) {
    this.ctime = ctime;
    setCtimeIsSet(true);
    return this;
  }

  public void unsetCtime() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __CTIME_ISSET_ID);
  }

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

  public void setCtimeIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __CTIME_ISSET_ID, value);
  }

  public long getMtime() {
    return this.mtime;
  }

  public Stat setMtime(long mtime) {
    this.mtime = mtime;
    setMtimeIsSet(true);
    return this;
  }

  public void unsetMtime() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __MTIME_ISSET_ID);
  }

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

  public void setMtimeIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __MTIME_ISSET_ID, value);
  }

  public int getVersion() {
    return this.version;
  }

  public Stat setVersion(int version) {
    this.version = version;
    setVersionIsSet(true);
    return this;
  }

  public void unsetVersion() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __VERSION_ISSET_ID);
  }

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

  public void setVersionIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __VERSION_ISSET_ID, value);
  }

  public int getCversion() {
    return this.cversion;
  }

  public Stat setCversion(int cversion) {
    this.cversion = cversion;
    setCversionIsSet(true);
    return this;
  }

  public void unsetCversion() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __CVERSION_ISSET_ID);
  }

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

  public void setCversionIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __CVERSION_ISSET_ID, value);
  }

  public int getAversion() {
    return this.aversion;
  }

  public Stat setAversion(int aversion) {
    this.aversion = aversion;
    setAversionIsSet(true);
    return this;
  }

  public void unsetAversion() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __AVERSION_ISSET_ID);
  }

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

  public void setAversionIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __AVERSION_ISSET_ID, value);
  }

  public long getEphemeralOwner() {
    return this.ephemeralOwner;
  }

  public Stat setEphemeralOwner(long ephemeralOwner) {
    this.ephemeralOwner = ephemeralOwner;
    setEphemeralOwnerIsSet(true);
    return this;
  }

  public void unsetEphemeralOwner() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __EPHEMERALOWNER_ISSET_ID);
  }

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

  public void setEphemeralOwnerIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __EPHEMERALOWNER_ISSET_ID, value);
  }

  public int getDataLength() {
    return this.dataLength;
  }

  public Stat setDataLength(int dataLength) {
    this.dataLength = dataLength;
    setDataLengthIsSet(true);
    return this;
  }

  public void unsetDataLength() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __DATALENGTH_ISSET_ID);
  }

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

  public void setDataLengthIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DATALENGTH_ISSET_ID, value);
  }

  public int getNumChildren() {
    return this.numChildren;
  }

  public Stat setNumChildren(int numChildren) {
    this.numChildren = numChildren;
    setNumChildrenIsSet(true);
    return this;
  }

  public void unsetNumChildren() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __NUMCHILDREN_ISSET_ID);
  }

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

  public void setNumChildrenIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __NUMCHILDREN_ISSET_ID, value);
  }

  public long getPzxid() {
    return this.pzxid;
  }

  public Stat setPzxid(long pzxid) {
    this.pzxid = pzxid;
    setPzxidIsSet(true);
    return this;
  }

  public void unsetPzxid() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __PZXID_ISSET_ID);
  }

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

  public void setPzxidIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __PZXID_ISSET_ID, value);
  }

  public void setFieldValue(_Fields field, Object value) {
    switch (field) {
    case CZXID:
      if (value == null) {
        unsetCzxid();
      } else {
        setCzxid((Long)value);
      }
      break;

    case MZXID:
      if (value == null) {
        unsetMzxid();
      } else {
        setMzxid((Long)value);
      }
      break;

    case CTIME:
      if (value == null) {
        unsetCtime();
      } else {
        setCtime((Long)value);
      }
      break;

    case MTIME:
      if (value == null) {
        unsetMtime();
      } else {
        setMtime((Long)value);
      }
      break;

    case VERSION:
      if (value == null) {
        unsetVersion();
      } else {
        setVersion((Integer)value);
      }
      break;

    case CVERSION:
      if (value == null) {
        unsetCversion();
      } else {
        setCversion((Integer)value);
      }
      break;

    case AVERSION:
      if (value == null) {
        unsetAversion();
      } else {
        setAversion((Integer)value);
      }
      break;

    case EPHEMERAL_OWNER:
      if (value == null) {
        unsetEphemeralOwner();
      } else {
        setEphemeralOwner((Long)value);
      }
      break;

    case DATA_LENGTH:
      if (value == null) {
        unsetDataLength();
      } else {
        setDataLength((Integer)value);
      }
      break;

    case NUM_CHILDREN:
      if (value == null) {
        unsetNumChildren();
      } else {
        setNumChildren((Integer)value);
      }
      break;

    case PZXID:
      if (value == null) {
        unsetPzxid();
      } else {
        setPzxid((Long)value);
      }
      break;

    }
  }

  public Object getFieldValue(_Fields field) {
    switch (field) {
    case CZXID:
      return Long.valueOf(getCzxid());

    case MZXID:
      return Long.valueOf(getMzxid());

    case CTIME:
      return Long.valueOf(getCtime());

    case MTIME:
      return Long.valueOf(getMtime());

    case VERSION:
      return Integer.valueOf(getVersion());

    case CVERSION:
      return Integer.valueOf(getCversion());

    case AVERSION:
      return Integer.valueOf(getAversion());

    case EPHEMERAL_OWNER:
      return Long.valueOf(getEphemeralOwner());

    case DATA_LENGTH:
      return Integer.valueOf(getDataLength());

    case NUM_CHILDREN:
      return Integer.valueOf(getNumChildren());

    case PZXID:
      return Long.valueOf(getPzxid());

    }
    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 CZXID:
      return isSetCzxid();
    case MZXID:
      return isSetMzxid();
    case CTIME:
      return isSetCtime();
    case MTIME:
      return isSetMtime();
    case VERSION:
      return isSetVersion();
    case CVERSION:
      return isSetCversion();
    case AVERSION:
      return isSetAversion();
    case EPHEMERAL_OWNER:
      return isSetEphemeralOwner();
    case DATA_LENGTH:
      return isSetDataLength();
    case NUM_CHILDREN:
      return isSetNumChildren();
    case PZXID:
      return isSetPzxid();
    }
    throw new IllegalStateException();
  }

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

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

    boolean this_present_czxid = true;
    boolean that_present_czxid = true;
    if (this_present_czxid || that_present_czxid) {
      if (!(this_present_czxid && that_present_czxid))
        return false;
      if (this.czxid != that.czxid)
        return false;
    }

    boolean this_present_mzxid = true;
    boolean that_present_mzxid = true;
    if (this_present_mzxid || that_present_mzxid) {
      if (!(this_present_mzxid && that_present_mzxid))
        return false;
      if (this.mzxid != that.mzxid)
        return false;
    }

    boolean this_present_ctime = true;
    boolean that_present_ctime = true;
    if (this_present_ctime || that_present_ctime) {
      if (!(this_present_ctime && that_present_ctime))
        return false;
      if (this.ctime != that.ctime)
        return false;
    }

    boolean this_present_mtime = true;
    boolean that_present_mtime = true;
    if (this_present_mtime || that_present_mtime) {
      if (!(this_present_mtime && that_present_mtime))
        return false;
      if (this.mtime != that.mtime)
        return false;
    }

    boolean this_present_version = true;
    boolean that_present_version = true;
    if (this_present_version || that_present_version) {
      if (!(this_present_version && that_present_version))
        return false;
      if (this.version != that.version)
        return false;
    }

    boolean this_present_cversion = true;
    boolean that_present_cversion = true;
    if (this_present_cversion || that_present_cversion) {
      if (!(this_present_cversion && that_present_cversion))
        return false;
      if (this.cversion != that.cversion)
        return false;
    }

    boolean this_present_aversion = true;
    boolean that_present_aversion = true;
    if (this_present_aversion || that_present_aversion) {
      if (!(this_present_aversion && that_present_aversion))
        return false;
      if (this.aversion != that.aversion)
        return false;
    }

    boolean this_present_ephemeralOwner = true;
    boolean that_present_ephemeralOwner = true;
    if (this_present_ephemeralOwner || that_present_ephemeralOwner) {
      if (!(this_present_ephemeralOwner && that_present_ephemeralOwner))
        return false;
      if (this.ephemeralOwner != that.ephemeralOwner)
        return false;
    }

    boolean this_present_dataLength = true;
    boolean that_present_dataLength = true;
    if (this_present_dataLength || that_present_dataLength) {
      if (!(this_present_dataLength && that_present_dataLength))
        return false;
      if (this.dataLength != that.dataLength)
        return false;
    }

    boolean this_present_numChildren = true;
    boolean that_present_numChildren = true;
    if (this_present_numChildren || that_present_numChildren) {
      if (!(this_present_numChildren && that_present_numChildren))
        return false;
      if (this.numChildren != that.numChildren)
        return false;
    }

    boolean this_present_pzxid = true;
    boolean that_present_pzxid = true;
    if (this_present_pzxid || that_present_pzxid) {
      if (!(this_present_pzxid && that_present_pzxid))
        return false;
      if (this.pzxid != that.pzxid)
        return false;
    }

    return true;
  }

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

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

    int lastComparison = 0;

    lastComparison = Boolean.valueOf(isSetCzxid()).compareTo(other.isSetCzxid());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetCzxid()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.czxid, other.czxid);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetMzxid()).compareTo(other.isSetMzxid());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetMzxid()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.mzxid, other.mzxid);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetCtime()).compareTo(other.isSetCtime());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetCtime()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ctime, other.ctime);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetMtime()).compareTo(other.isSetMtime());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetMtime()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.mtime, other.mtime);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetVersion()).compareTo(other.isSetVersion());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetVersion()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.version, other.version);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetCversion()).compareTo(other.isSetCversion());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetCversion()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.cversion, other.cversion);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetAversion()).compareTo(other.isSetAversion());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetAversion()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.aversion, other.aversion);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetEphemeralOwner()).compareTo(other.isSetEphemeralOwner());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetEphemeralOwner()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ephemeralOwner, other.ephemeralOwner);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetDataLength()).compareTo(other.isSetDataLength());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetDataLength()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dataLength, other.dataLength);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetNumChildren()).compareTo(other.isSetNumChildren());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetNumChildren()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.numChildren, other.numChildren);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetPzxid()).compareTo(other.isSetPzxid());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetPzxid()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.pzxid, other.pzxid);
      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("Stat(");
    boolean first = true;

    sb.append("czxid:");
    sb.append(this.czxid);
    first = false;
    if (!first) sb.append(", ");
    sb.append("mzxid:");
    sb.append(this.mzxid);
    first = false;
    if (!first) sb.append(", ");
    sb.append("ctime:");
    sb.append(this.ctime);
    first = false;
    if (!first) sb.append(", ");
    sb.append("mtime:");
    sb.append(this.mtime);
    first = false;
    if (!first) sb.append(", ");
    sb.append("version:");
    sb.append(this.version);
    first = false;
    if (!first) sb.append(", ");
    sb.append("cversion:");
    sb.append(this.cversion);
    first = false;
    if (!first) sb.append(", ");
    sb.append("aversion:");
    sb.append(this.aversion);
    first = false;
    if (!first) sb.append(", ");
    sb.append("ephemeralOwner:");
    sb.append(this.ephemeralOwner);
    first = false;
    if (!first) sb.append(", ");
    sb.append("dataLength:");
    sb.append(this.dataLength);
    first = false;
    if (!first) sb.append(", ");
    sb.append("numChildren:");
    sb.append(this.numChildren);
    first = false;
    if (!first) sb.append(", ");
    sb.append("pzxid:");
    sb.append(this.pzxid);
    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 StatStandardSchemeFactory implements SchemeFactory {
    public StatStandardScheme getScheme() {
      return new StatStandardScheme();
    }
  }

  private static class StatStandardScheme extends StandardScheme<Stat> {

    public void read(org.apache.thrift.protocol.TProtocol iprot, Stat 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: // CZXID
            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
              struct.czxid = iprot.readI64();
              struct.setCzxidIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 2: // MZXID
            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
              struct.mzxid = iprot.readI64();
              struct.setMzxidIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 3: // CTIME
            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
              struct.ctime = iprot.readI64();
              struct.setCtimeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 4: // MTIME
            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
              struct.mtime = iprot.readI64();
              struct.setMtimeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 5: // VERSION
            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
              struct.version = iprot.readI32();
              struct.setVersionIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 6: // CVERSION
            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
              struct.cversion = iprot.readI32();
              struct.setCversionIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 7: // AVERSION
            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
              struct.aversion = iprot.readI32();
              struct.setAversionIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 8: // EPHEMERAL_OWNER
            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
              struct.ephemeralOwner = iprot.readI64();
              struct.setEphemeralOwnerIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 9: // DATA_LENGTH
            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
              struct.dataLength = iprot.readI32();
              struct.setDataLengthIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 10: // NUM_CHILDREN
            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
              struct.numChildren = iprot.readI32();
              struct.setNumChildrenIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 11: // PZXID
            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
              struct.pzxid = iprot.readI64();
              struct.setPzxidIsSet(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, Stat struct) throws org.apache.thrift.TException {
      struct.validate();

      oprot.writeStructBegin(STRUCT_DESC);
      oprot.writeFieldBegin(CZXID_FIELD_DESC);
      oprot.writeI64(struct.czxid);
      oprot.writeFieldEnd();
      oprot.writeFieldBegin(MZXID_FIELD_DESC);
      oprot.writeI64(struct.mzxid);
      oprot.writeFieldEnd();
      oprot.writeFieldBegin(CTIME_FIELD_DESC);
      oprot.writeI64(struct.ctime);
      oprot.writeFieldEnd();
      oprot.writeFieldBegin(MTIME_FIELD_DESC);
      oprot.writeI64(struct.mtime);
      oprot.writeFieldEnd();
      oprot.writeFieldBegin(VERSION_FIELD_DESC);
      oprot.writeI32(struct.version);
      oprot.writeFieldEnd();
      oprot.writeFieldBegin(CVERSION_FIELD_DESC);
      oprot.writeI32(struct.cversion);
      oprot.writeFieldEnd();
      oprot.writeFieldBegin(AVERSION_FIELD_DESC);
      oprot.writeI32(struct.aversion);
      oprot.writeFieldEnd();
      oprot.writeFieldBegin(EPHEMERAL_OWNER_FIELD_DESC);
      oprot.writeI64(struct.ephemeralOwner);
      oprot.writeFieldEnd();
      oprot.writeFieldBegin(DATA_LENGTH_FIELD_DESC);
      oprot.writeI32(struct.dataLength);
      oprot.writeFieldEnd();
      oprot.writeFieldBegin(NUM_CHILDREN_FIELD_DESC);
      oprot.writeI32(struct.numChildren);
      oprot.writeFieldEnd();
      oprot.writeFieldBegin(PZXID_FIELD_DESC);
      oprot.writeI64(struct.pzxid);
      oprot.writeFieldEnd();
      oprot.writeFieldStop();
      oprot.writeStructEnd();
    }

  }

  private static class StatTupleSchemeFactory implements SchemeFactory {
    public StatTupleScheme getScheme() {
      return new StatTupleScheme();
    }
  }

  private static class StatTupleScheme extends TupleScheme<Stat> {

    @Override
    public void write(org.apache.thrift.protocol.TProtocol prot, Stat struct) throws org.apache.thrift.TException {
      TTupleProtocol oprot = (TTupleProtocol) prot;
      BitSet optionals = new BitSet();
      if (struct.isSetCzxid()) {
        optionals.set(0);
      }
      if (struct.isSetMzxid()) {
        optionals.set(1);
      }
      if (struct.isSetCtime()) {
        optionals.set(2);
      }
      if (struct.isSetMtime()) {
        optionals.set(3);
      }
      if (struct.isSetVersion()) {
        optionals.set(4);
      }
      if (struct.isSetCversion()) {
        optionals.set(5);
      }
      if (struct.isSetAversion()) {
        optionals.set(6);
      }
      if (struct.isSetEphemeralOwner()) {
        optionals.set(7);
      }
      if (struct.isSetDataLength()) {
        optionals.set(8);
      }
      if (struct.isSetNumChildren()) {
        optionals.set(9);
      }
      if (struct.isSetPzxid()) {
        optionals.set(10);
      }
      oprot.writeBitSet(optionals, 11);
      if (struct.isSetCzxid()) {
        oprot.writeI64(struct.czxid);
      }
      if (struct.isSetMzxid()) {
        oprot.writeI64(struct.mzxid);
      }
      if (struct.isSetCtime()) {
        oprot.writeI64(struct.ctime);
      }
      if (struct.isSetMtime()) {
        oprot.writeI64(struct.mtime);
      }
      if (struct.isSetVersion()) {
        oprot.writeI32(struct.version);
      }
      if (struct.isSetCversion()) {
        oprot.writeI32(struct.cversion);
      }
      if (struct.isSetAversion()) {
        oprot.writeI32(struct.aversion);
      }
      if (struct.isSetEphemeralOwner()) {
        oprot.writeI64(struct.ephemeralOwner);
      }
      if (struct.isSetDataLength()) {
        oprot.writeI32(struct.dataLength);
      }
      if (struct.isSetNumChildren()) {
        oprot.writeI32(struct.numChildren);
      }
      if (struct.isSetPzxid()) {
        oprot.writeI64(struct.pzxid);
      }
    }

    @Override
    public void read(org.apache.thrift.protocol.TProtocol prot, Stat struct) throws org.apache.thrift.TException {
      TTupleProtocol iprot = (TTupleProtocol) prot;
      BitSet incoming = iprot.readBitSet(11);
      if (incoming.get(0)) {
        struct.czxid = iprot.readI64();
        struct.setCzxidIsSet(true);
      }
      if (incoming.get(1)) {
        struct.mzxid = iprot.readI64();
        struct.setMzxidIsSet(true);
      }
      if (incoming.get(2)) {
        struct.ctime = iprot.readI64();
        struct.setCtimeIsSet(true);
      }
      if (incoming.get(3)) {
        struct.mtime = iprot.readI64();
        struct.setMtimeIsSet(true);
      }
      if (incoming.get(4)) {
        struct.version = iprot.readI32();
        struct.setVersionIsSet(true);
      }
      if (incoming.get(5)) {
        struct.cversion = iprot.readI32();
        struct.setCversionIsSet(true);
      }
      if (incoming.get(6)) {
        struct.aversion = iprot.readI32();
        struct.setAversionIsSet(true);
      }
      if (incoming.get(7)) {
        struct.ephemeralOwner = iprot.readI64();
        struct.setEphemeralOwnerIsSet(true);
      }
      if (incoming.get(8)) {
        struct.dataLength = iprot.readI32();
        struct.setDataLengthIsSet(true);
      }
      if (incoming.get(9)) {
        struct.numChildren = iprot.readI32();
        struct.setNumChildrenIsSet(true);
      }
      if (incoming.get(10)) {
        struct.pzxid = iprot.readI64();
        struct.setPzxidIsSet(true);
      }
    }
  }

}

