/**
 * Autogenerated by Thrift Compiler (0.13.0)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */
package org.eclipse.hawk.service.api;

@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.13.0)", date = "2021-04-18")
public class HawkQueryOptions implements org.apache.thrift.TBase<HawkQueryOptions, HawkQueryOptions._Fields>, java.io.Serializable, Cloneable, Comparable<HawkQueryOptions> {
  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("HawkQueryOptions");

  private static final org.apache.thrift.protocol.TField REPOSITORY_PATTERN_FIELD_DESC = new org.apache.thrift.protocol.TField("repositoryPattern", org.apache.thrift.protocol.TType.STRING, (short)1);
  private static final org.apache.thrift.protocol.TField FILE_PATTERNS_FIELD_DESC = new org.apache.thrift.protocol.TField("filePatterns", org.apache.thrift.protocol.TType.LIST, (short)2);
  private static final org.apache.thrift.protocol.TField DEFAULT_NAMESPACES_FIELD_DESC = new org.apache.thrift.protocol.TField("defaultNamespaces", org.apache.thrift.protocol.TType.STRING, (short)3);
  private static final org.apache.thrift.protocol.TField INCLUDE_ATTRIBUTES_FIELD_DESC = new org.apache.thrift.protocol.TField("includeAttributes", org.apache.thrift.protocol.TType.BOOL, (short)4);
  private static final org.apache.thrift.protocol.TField INCLUDE_REFERENCES_FIELD_DESC = new org.apache.thrift.protocol.TField("includeReferences", org.apache.thrift.protocol.TType.BOOL, (short)5);
  private static final org.apache.thrift.protocol.TField INCLUDE_NODE_IDS_FIELD_DESC = new org.apache.thrift.protocol.TField("includeNodeIDs", org.apache.thrift.protocol.TType.BOOL, (short)6);
  private static final org.apache.thrift.protocol.TField INCLUDE_CONTAINED_FIELD_DESC = new org.apache.thrift.protocol.TField("includeContained", org.apache.thrift.protocol.TType.BOOL, (short)7);
  private static final org.apache.thrift.protocol.TField EFFECTIVE_METAMODEL_INCLUDES_FIELD_DESC = new org.apache.thrift.protocol.TField("effectiveMetamodelIncludes", org.apache.thrift.protocol.TType.MAP, (short)8);
  private static final org.apache.thrift.protocol.TField EFFECTIVE_METAMODEL_EXCLUDES_FIELD_DESC = new org.apache.thrift.protocol.TField("effectiveMetamodelExcludes", org.apache.thrift.protocol.TType.MAP, (short)9);
  private static final org.apache.thrift.protocol.TField INCLUDE_DERIVED_FIELD_DESC = new org.apache.thrift.protocol.TField("includeDerived", org.apache.thrift.protocol.TType.BOOL, (short)10);

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

  public @org.apache.thrift.annotation.Nullable java.lang.String repositoryPattern; // optional
  public @org.apache.thrift.annotation.Nullable java.util.List<java.lang.String> filePatterns; // optional
  public @org.apache.thrift.annotation.Nullable java.lang.String defaultNamespaces; // optional
  public boolean includeAttributes; // optional
  public boolean includeReferences; // optional
  public boolean includeNodeIDs; // optional
  public boolean includeContained; // optional
  public @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.util.Set<java.lang.String>>> effectiveMetamodelIncludes; // optional
  public @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.util.Set<java.lang.String>>> effectiveMetamodelExcludes; // optional
  public boolean includeDerived; // optional

  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
    REPOSITORY_PATTERN((short)1, "repositoryPattern"),
    FILE_PATTERNS((short)2, "filePatterns"),
    DEFAULT_NAMESPACES((short)3, "defaultNamespaces"),
    INCLUDE_ATTRIBUTES((short)4, "includeAttributes"),
    INCLUDE_REFERENCES((short)5, "includeReferences"),
    INCLUDE_NODE_IDS((short)6, "includeNodeIDs"),
    INCLUDE_CONTAINED((short)7, "includeContained"),
    EFFECTIVE_METAMODEL_INCLUDES((short)8, "effectiveMetamodelIncludes"),
    EFFECTIVE_METAMODEL_EXCLUDES((short)9, "effectiveMetamodelExcludes"),
    INCLUDE_DERIVED((short)10, "includeDerived");

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

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

    /**
     * Find the _Fields constant that matches fieldId, or null if its not found.
     */
    @org.apache.thrift.annotation.Nullable
    public static _Fields findByThriftId(int fieldId) {
      switch(fieldId) {
        case 1: // REPOSITORY_PATTERN
          return REPOSITORY_PATTERN;
        case 2: // FILE_PATTERNS
          return FILE_PATTERNS;
        case 3: // DEFAULT_NAMESPACES
          return DEFAULT_NAMESPACES;
        case 4: // INCLUDE_ATTRIBUTES
          return INCLUDE_ATTRIBUTES;
        case 5: // INCLUDE_REFERENCES
          return INCLUDE_REFERENCES;
        case 6: // INCLUDE_NODE_IDS
          return INCLUDE_NODE_IDS;
        case 7: // INCLUDE_CONTAINED
          return INCLUDE_CONTAINED;
        case 8: // EFFECTIVE_METAMODEL_INCLUDES
          return EFFECTIVE_METAMODEL_INCLUDES;
        case 9: // EFFECTIVE_METAMODEL_EXCLUDES
          return EFFECTIVE_METAMODEL_EXCLUDES;
        case 10: // INCLUDE_DERIVED
          return INCLUDE_DERIVED;
        default:
          return null;
      }
    }

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

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

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

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

    public short getThriftFieldId() {
      return _thriftId;
    }

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

  // isset id assignments
  private static final int __INCLUDEATTRIBUTES_ISSET_ID = 0;
  private static final int __INCLUDEREFERENCES_ISSET_ID = 1;
  private static final int __INCLUDENODEIDS_ISSET_ID = 2;
  private static final int __INCLUDECONTAINED_ISSET_ID = 3;
  private static final int __INCLUDEDERIVED_ISSET_ID = 4;
  private byte __isset_bitfield = 0;
  private static final _Fields optionals[] = {_Fields.REPOSITORY_PATTERN,_Fields.FILE_PATTERNS,_Fields.DEFAULT_NAMESPACES,_Fields.INCLUDE_ATTRIBUTES,_Fields.INCLUDE_REFERENCES,_Fields.INCLUDE_NODE_IDS,_Fields.INCLUDE_CONTAINED,_Fields.EFFECTIVE_METAMODEL_INCLUDES,_Fields.EFFECTIVE_METAMODEL_EXCLUDES,_Fields.INCLUDE_DERIVED};
  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
  static {
    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
    tmpMap.put(_Fields.REPOSITORY_PATTERN, new org.apache.thrift.meta_data.FieldMetaData("repositoryPattern", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.FILE_PATTERNS, new org.apache.thrift.meta_data.FieldMetaData("filePatterns", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        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.DEFAULT_NAMESPACES, new org.apache.thrift.meta_data.FieldMetaData("defaultNamespaces", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.INCLUDE_ATTRIBUTES, new org.apache.thrift.meta_data.FieldMetaData("includeAttributes", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    tmpMap.put(_Fields.INCLUDE_REFERENCES, new org.apache.thrift.meta_data.FieldMetaData("includeReferences", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    tmpMap.put(_Fields.INCLUDE_NODE_IDS, new org.apache.thrift.meta_data.FieldMetaData("includeNodeIDs", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    tmpMap.put(_Fields.INCLUDE_CONTAINED, new org.apache.thrift.meta_data.FieldMetaData("includeContained", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    tmpMap.put(_Fields.EFFECTIVE_METAMODEL_INCLUDES, new org.apache.thrift.meta_data.FieldMetaData("effectiveMetamodelIncludes", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
            new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
                new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
                new org.apache.thrift.meta_data.SetMetaData(org.apache.thrift.protocol.TType.SET, 
                    new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))))));
    tmpMap.put(_Fields.EFFECTIVE_METAMODEL_EXCLUDES, new org.apache.thrift.meta_data.FieldMetaData("effectiveMetamodelExcludes", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
            new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
                new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
                new org.apache.thrift.meta_data.SetMetaData(org.apache.thrift.protocol.TType.SET, 
                    new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))))));
    tmpMap.put(_Fields.INCLUDE_DERIVED, new org.apache.thrift.meta_data.FieldMetaData("includeDerived", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(HawkQueryOptions.class, metaDataMap);
  }

  public HawkQueryOptions() {
    this.repositoryPattern = "*";

    this.includeAttributes = true;

    this.includeReferences = true;

    this.includeNodeIDs = false;

    this.includeContained = true;

    this.includeDerived = true;

  }

  /**
   * Performs a deep copy on <i>other</i>.
   */
  public HawkQueryOptions(HawkQueryOptions other) {
    __isset_bitfield = other.__isset_bitfield;
    if (other.isSetRepositoryPattern()) {
      this.repositoryPattern = other.repositoryPattern;
    }
    if (other.isSetFilePatterns()) {
      java.util.List<java.lang.String> __this__filePatterns = new java.util.ArrayList<java.lang.String>(other.filePatterns);
      this.filePatterns = __this__filePatterns;
    }
    if (other.isSetDefaultNamespaces()) {
      this.defaultNamespaces = other.defaultNamespaces;
    }
    this.includeAttributes = other.includeAttributes;
    this.includeReferences = other.includeReferences;
    this.includeNodeIDs = other.includeNodeIDs;
    this.includeContained = other.includeContained;
    if (other.isSetEffectiveMetamodelIncludes()) {
      java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.util.Set<java.lang.String>>> __this__effectiveMetamodelIncludes = new java.util.HashMap<java.lang.String,java.util.Map<java.lang.String,java.util.Set<java.lang.String>>>(other.effectiveMetamodelIncludes.size());
      for (java.util.Map.Entry<java.lang.String, java.util.Map<java.lang.String,java.util.Set<java.lang.String>>> other_element : other.effectiveMetamodelIncludes.entrySet()) {

        java.lang.String other_element_key = other_element.getKey();
        java.util.Map<java.lang.String,java.util.Set<java.lang.String>> other_element_value = other_element.getValue();

        java.lang.String __this__effectiveMetamodelIncludes_copy_key = other_element_key;

        java.util.Map<java.lang.String,java.util.Set<java.lang.String>> __this__effectiveMetamodelIncludes_copy_value = new java.util.HashMap<java.lang.String,java.util.Set<java.lang.String>>(other_element_value.size());
        for (java.util.Map.Entry<java.lang.String, java.util.Set<java.lang.String>> other_element_value_element : other_element_value.entrySet()) {

          java.lang.String other_element_value_element_key = other_element_value_element.getKey();
          java.util.Set<java.lang.String> other_element_value_element_value = other_element_value_element.getValue();

          java.lang.String __this__effectiveMetamodelIncludes_copy_value_copy_key = other_element_value_element_key;

          java.util.Set<java.lang.String> __this__effectiveMetamodelIncludes_copy_value_copy_value = new java.util.HashSet<java.lang.String>(other_element_value_element_value);

          __this__effectiveMetamodelIncludes_copy_value.put(__this__effectiveMetamodelIncludes_copy_value_copy_key, __this__effectiveMetamodelIncludes_copy_value_copy_value);
        }

        __this__effectiveMetamodelIncludes.put(__this__effectiveMetamodelIncludes_copy_key, __this__effectiveMetamodelIncludes_copy_value);
      }
      this.effectiveMetamodelIncludes = __this__effectiveMetamodelIncludes;
    }
    if (other.isSetEffectiveMetamodelExcludes()) {
      java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.util.Set<java.lang.String>>> __this__effectiveMetamodelExcludes = new java.util.HashMap<java.lang.String,java.util.Map<java.lang.String,java.util.Set<java.lang.String>>>(other.effectiveMetamodelExcludes.size());
      for (java.util.Map.Entry<java.lang.String, java.util.Map<java.lang.String,java.util.Set<java.lang.String>>> other_element : other.effectiveMetamodelExcludes.entrySet()) {

        java.lang.String other_element_key = other_element.getKey();
        java.util.Map<java.lang.String,java.util.Set<java.lang.String>> other_element_value = other_element.getValue();

        java.lang.String __this__effectiveMetamodelExcludes_copy_key = other_element_key;

        java.util.Map<java.lang.String,java.util.Set<java.lang.String>> __this__effectiveMetamodelExcludes_copy_value = new java.util.HashMap<java.lang.String,java.util.Set<java.lang.String>>(other_element_value.size());
        for (java.util.Map.Entry<java.lang.String, java.util.Set<java.lang.String>> other_element_value_element : other_element_value.entrySet()) {

          java.lang.String other_element_value_element_key = other_element_value_element.getKey();
          java.util.Set<java.lang.String> other_element_value_element_value = other_element_value_element.getValue();

          java.lang.String __this__effectiveMetamodelExcludes_copy_value_copy_key = other_element_value_element_key;

          java.util.Set<java.lang.String> __this__effectiveMetamodelExcludes_copy_value_copy_value = new java.util.HashSet<java.lang.String>(other_element_value_element_value);

          __this__effectiveMetamodelExcludes_copy_value.put(__this__effectiveMetamodelExcludes_copy_value_copy_key, __this__effectiveMetamodelExcludes_copy_value_copy_value);
        }

        __this__effectiveMetamodelExcludes.put(__this__effectiveMetamodelExcludes_copy_key, __this__effectiveMetamodelExcludes_copy_value);
      }
      this.effectiveMetamodelExcludes = __this__effectiveMetamodelExcludes;
    }
    this.includeDerived = other.includeDerived;
  }

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

  @Override
  public void clear() {
    this.repositoryPattern = "*";

    this.filePatterns = null;
    this.defaultNamespaces = null;
    this.includeAttributes = true;

    this.includeReferences = true;

    this.includeNodeIDs = false;

    this.includeContained = true;

    this.effectiveMetamodelIncludes = null;
    this.effectiveMetamodelExcludes = null;
    this.includeDerived = true;

  }

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

  public HawkQueryOptions setRepositoryPattern(@org.apache.thrift.annotation.Nullable java.lang.String repositoryPattern) {
    this.repositoryPattern = repositoryPattern;
    return this;
  }

  public void unsetRepositoryPattern() {
    this.repositoryPattern = null;
  }

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

  public void setRepositoryPatternIsSet(boolean value) {
    if (!value) {
      this.repositoryPattern = null;
    }
  }

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

  @org.apache.thrift.annotation.Nullable
  public java.util.Iterator<java.lang.String> getFilePatternsIterator() {
    return (this.filePatterns == null) ? null : this.filePatterns.iterator();
  }

  public void addToFilePatterns(java.lang.String elem) {
    if (this.filePatterns == null) {
      this.filePatterns = new java.util.ArrayList<java.lang.String>();
    }
    this.filePatterns.add(elem);
  }

  @org.apache.thrift.annotation.Nullable
  public java.util.List<java.lang.String> getFilePatterns() {
    return this.filePatterns;
  }

  public HawkQueryOptions setFilePatterns(@org.apache.thrift.annotation.Nullable java.util.List<java.lang.String> filePatterns) {
    this.filePatterns = filePatterns;
    return this;
  }

  public void unsetFilePatterns() {
    this.filePatterns = null;
  }

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

  public void setFilePatternsIsSet(boolean value) {
    if (!value) {
      this.filePatterns = null;
    }
  }

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

  public HawkQueryOptions setDefaultNamespaces(@org.apache.thrift.annotation.Nullable java.lang.String defaultNamespaces) {
    this.defaultNamespaces = defaultNamespaces;
    return this;
  }

  public void unsetDefaultNamespaces() {
    this.defaultNamespaces = null;
  }

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

  public void setDefaultNamespacesIsSet(boolean value) {
    if (!value) {
      this.defaultNamespaces = null;
    }
  }

  public boolean isIncludeAttributes() {
    return this.includeAttributes;
  }

  public HawkQueryOptions setIncludeAttributes(boolean includeAttributes) {
    this.includeAttributes = includeAttributes;
    setIncludeAttributesIsSet(true);
    return this;
  }

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

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

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

  public boolean isIncludeReferences() {
    return this.includeReferences;
  }

  public HawkQueryOptions setIncludeReferences(boolean includeReferences) {
    this.includeReferences = includeReferences;
    setIncludeReferencesIsSet(true);
    return this;
  }

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

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

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

  public boolean isIncludeNodeIDs() {
    return this.includeNodeIDs;
  }

  public HawkQueryOptions setIncludeNodeIDs(boolean includeNodeIDs) {
    this.includeNodeIDs = includeNodeIDs;
    setIncludeNodeIDsIsSet(true);
    return this;
  }

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

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

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

  public boolean isIncludeContained() {
    return this.includeContained;
  }

  public HawkQueryOptions setIncludeContained(boolean includeContained) {
    this.includeContained = includeContained;
    setIncludeContainedIsSet(true);
    return this;
  }

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

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

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

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

  public void putToEffectiveMetamodelIncludes(java.lang.String key, java.util.Map<java.lang.String,java.util.Set<java.lang.String>> val) {
    if (this.effectiveMetamodelIncludes == null) {
      this.effectiveMetamodelIncludes = new java.util.HashMap<java.lang.String,java.util.Map<java.lang.String,java.util.Set<java.lang.String>>>();
    }
    this.effectiveMetamodelIncludes.put(key, val);
  }

  @org.apache.thrift.annotation.Nullable
  public java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.util.Set<java.lang.String>>> getEffectiveMetamodelIncludes() {
    return this.effectiveMetamodelIncludes;
  }

  public HawkQueryOptions setEffectiveMetamodelIncludes(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.util.Set<java.lang.String>>> effectiveMetamodelIncludes) {
    this.effectiveMetamodelIncludes = effectiveMetamodelIncludes;
    return this;
  }

  public void unsetEffectiveMetamodelIncludes() {
    this.effectiveMetamodelIncludes = null;
  }

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

  public void setEffectiveMetamodelIncludesIsSet(boolean value) {
    if (!value) {
      this.effectiveMetamodelIncludes = null;
    }
  }

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

  public void putToEffectiveMetamodelExcludes(java.lang.String key, java.util.Map<java.lang.String,java.util.Set<java.lang.String>> val) {
    if (this.effectiveMetamodelExcludes == null) {
      this.effectiveMetamodelExcludes = new java.util.HashMap<java.lang.String,java.util.Map<java.lang.String,java.util.Set<java.lang.String>>>();
    }
    this.effectiveMetamodelExcludes.put(key, val);
  }

  @org.apache.thrift.annotation.Nullable
  public java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.util.Set<java.lang.String>>> getEffectiveMetamodelExcludes() {
    return this.effectiveMetamodelExcludes;
  }

  public HawkQueryOptions setEffectiveMetamodelExcludes(@org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.util.Set<java.lang.String>>> effectiveMetamodelExcludes) {
    this.effectiveMetamodelExcludes = effectiveMetamodelExcludes;
    return this;
  }

  public void unsetEffectiveMetamodelExcludes() {
    this.effectiveMetamodelExcludes = null;
  }

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

  public void setEffectiveMetamodelExcludesIsSet(boolean value) {
    if (!value) {
      this.effectiveMetamodelExcludes = null;
    }
  }

  public boolean isIncludeDerived() {
    return this.includeDerived;
  }

  public HawkQueryOptions setIncludeDerived(boolean includeDerived) {
    this.includeDerived = includeDerived;
    setIncludeDerivedIsSet(true);
    return this;
  }

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

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

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

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

    case FILE_PATTERNS:
      if (value == null) {
        unsetFilePatterns();
      } else {
        setFilePatterns((java.util.List<java.lang.String>)value);
      }
      break;

    case DEFAULT_NAMESPACES:
      if (value == null) {
        unsetDefaultNamespaces();
      } else {
        setDefaultNamespaces((java.lang.String)value);
      }
      break;

    case INCLUDE_ATTRIBUTES:
      if (value == null) {
        unsetIncludeAttributes();
      } else {
        setIncludeAttributes((java.lang.Boolean)value);
      }
      break;

    case INCLUDE_REFERENCES:
      if (value == null) {
        unsetIncludeReferences();
      } else {
        setIncludeReferences((java.lang.Boolean)value);
      }
      break;

    case INCLUDE_NODE_IDS:
      if (value == null) {
        unsetIncludeNodeIDs();
      } else {
        setIncludeNodeIDs((java.lang.Boolean)value);
      }
      break;

    case INCLUDE_CONTAINED:
      if (value == null) {
        unsetIncludeContained();
      } else {
        setIncludeContained((java.lang.Boolean)value);
      }
      break;

    case EFFECTIVE_METAMODEL_INCLUDES:
      if (value == null) {
        unsetEffectiveMetamodelIncludes();
      } else {
        setEffectiveMetamodelIncludes((java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.util.Set<java.lang.String>>>)value);
      }
      break;

    case EFFECTIVE_METAMODEL_EXCLUDES:
      if (value == null) {
        unsetEffectiveMetamodelExcludes();
      } else {
        setEffectiveMetamodelExcludes((java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.util.Set<java.lang.String>>>)value);
      }
      break;

    case INCLUDE_DERIVED:
      if (value == null) {
        unsetIncludeDerived();
      } else {
        setIncludeDerived((java.lang.Boolean)value);
      }
      break;

    }
  }

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

    case FILE_PATTERNS:
      return getFilePatterns();

    case DEFAULT_NAMESPACES:
      return getDefaultNamespaces();

    case INCLUDE_ATTRIBUTES:
      return isIncludeAttributes();

    case INCLUDE_REFERENCES:
      return isIncludeReferences();

    case INCLUDE_NODE_IDS:
      return isIncludeNodeIDs();

    case INCLUDE_CONTAINED:
      return isIncludeContained();

    case EFFECTIVE_METAMODEL_INCLUDES:
      return getEffectiveMetamodelIncludes();

    case EFFECTIVE_METAMODEL_EXCLUDES:
      return getEffectiveMetamodelExcludes();

    case INCLUDE_DERIVED:
      return isIncludeDerived();

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

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

    switch (field) {
    case REPOSITORY_PATTERN:
      return isSetRepositoryPattern();
    case FILE_PATTERNS:
      return isSetFilePatterns();
    case DEFAULT_NAMESPACES:
      return isSetDefaultNamespaces();
    case INCLUDE_ATTRIBUTES:
      return isSetIncludeAttributes();
    case INCLUDE_REFERENCES:
      return isSetIncludeReferences();
    case INCLUDE_NODE_IDS:
      return isSetIncludeNodeIDs();
    case INCLUDE_CONTAINED:
      return isSetIncludeContained();
    case EFFECTIVE_METAMODEL_INCLUDES:
      return isSetEffectiveMetamodelIncludes();
    case EFFECTIVE_METAMODEL_EXCLUDES:
      return isSetEffectiveMetamodelExcludes();
    case INCLUDE_DERIVED:
      return isSetIncludeDerived();
    }
    throw new java.lang.IllegalStateException();
  }

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

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

    boolean this_present_repositoryPattern = true && this.isSetRepositoryPattern();
    boolean that_present_repositoryPattern = true && that.isSetRepositoryPattern();
    if (this_present_repositoryPattern || that_present_repositoryPattern) {
      if (!(this_present_repositoryPattern && that_present_repositoryPattern))
        return false;
      if (!this.repositoryPattern.equals(that.repositoryPattern))
        return false;
    }

    boolean this_present_filePatterns = true && this.isSetFilePatterns();
    boolean that_present_filePatterns = true && that.isSetFilePatterns();
    if (this_present_filePatterns || that_present_filePatterns) {
      if (!(this_present_filePatterns && that_present_filePatterns))
        return false;
      if (!this.filePatterns.equals(that.filePatterns))
        return false;
    }

    boolean this_present_defaultNamespaces = true && this.isSetDefaultNamespaces();
    boolean that_present_defaultNamespaces = true && that.isSetDefaultNamespaces();
    if (this_present_defaultNamespaces || that_present_defaultNamespaces) {
      if (!(this_present_defaultNamespaces && that_present_defaultNamespaces))
        return false;
      if (!this.defaultNamespaces.equals(that.defaultNamespaces))
        return false;
    }

    boolean this_present_includeAttributes = true && this.isSetIncludeAttributes();
    boolean that_present_includeAttributes = true && that.isSetIncludeAttributes();
    if (this_present_includeAttributes || that_present_includeAttributes) {
      if (!(this_present_includeAttributes && that_present_includeAttributes))
        return false;
      if (this.includeAttributes != that.includeAttributes)
        return false;
    }

    boolean this_present_includeReferences = true && this.isSetIncludeReferences();
    boolean that_present_includeReferences = true && that.isSetIncludeReferences();
    if (this_present_includeReferences || that_present_includeReferences) {
      if (!(this_present_includeReferences && that_present_includeReferences))
        return false;
      if (this.includeReferences != that.includeReferences)
        return false;
    }

    boolean this_present_includeNodeIDs = true && this.isSetIncludeNodeIDs();
    boolean that_present_includeNodeIDs = true && that.isSetIncludeNodeIDs();
    if (this_present_includeNodeIDs || that_present_includeNodeIDs) {
      if (!(this_present_includeNodeIDs && that_present_includeNodeIDs))
        return false;
      if (this.includeNodeIDs != that.includeNodeIDs)
        return false;
    }

    boolean this_present_includeContained = true && this.isSetIncludeContained();
    boolean that_present_includeContained = true && that.isSetIncludeContained();
    if (this_present_includeContained || that_present_includeContained) {
      if (!(this_present_includeContained && that_present_includeContained))
        return false;
      if (this.includeContained != that.includeContained)
        return false;
    }

    boolean this_present_effectiveMetamodelIncludes = true && this.isSetEffectiveMetamodelIncludes();
    boolean that_present_effectiveMetamodelIncludes = true && that.isSetEffectiveMetamodelIncludes();
    if (this_present_effectiveMetamodelIncludes || that_present_effectiveMetamodelIncludes) {
      if (!(this_present_effectiveMetamodelIncludes && that_present_effectiveMetamodelIncludes))
        return false;
      if (!this.effectiveMetamodelIncludes.equals(that.effectiveMetamodelIncludes))
        return false;
    }

    boolean this_present_effectiveMetamodelExcludes = true && this.isSetEffectiveMetamodelExcludes();
    boolean that_present_effectiveMetamodelExcludes = true && that.isSetEffectiveMetamodelExcludes();
    if (this_present_effectiveMetamodelExcludes || that_present_effectiveMetamodelExcludes) {
      if (!(this_present_effectiveMetamodelExcludes && that_present_effectiveMetamodelExcludes))
        return false;
      if (!this.effectiveMetamodelExcludes.equals(that.effectiveMetamodelExcludes))
        return false;
    }

    boolean this_present_includeDerived = true && this.isSetIncludeDerived();
    boolean that_present_includeDerived = true && that.isSetIncludeDerived();
    if (this_present_includeDerived || that_present_includeDerived) {
      if (!(this_present_includeDerived && that_present_includeDerived))
        return false;
      if (this.includeDerived != that.includeDerived)
        return false;
    }

    return true;
  }

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

    hashCode = hashCode * 8191 + ((isSetRepositoryPattern()) ? 131071 : 524287);
    if (isSetRepositoryPattern())
      hashCode = hashCode * 8191 + repositoryPattern.hashCode();

    hashCode = hashCode * 8191 + ((isSetFilePatterns()) ? 131071 : 524287);
    if (isSetFilePatterns())
      hashCode = hashCode * 8191 + filePatterns.hashCode();

    hashCode = hashCode * 8191 + ((isSetDefaultNamespaces()) ? 131071 : 524287);
    if (isSetDefaultNamespaces())
      hashCode = hashCode * 8191 + defaultNamespaces.hashCode();

    hashCode = hashCode * 8191 + ((isSetIncludeAttributes()) ? 131071 : 524287);
    if (isSetIncludeAttributes())
      hashCode = hashCode * 8191 + ((includeAttributes) ? 131071 : 524287);

    hashCode = hashCode * 8191 + ((isSetIncludeReferences()) ? 131071 : 524287);
    if (isSetIncludeReferences())
      hashCode = hashCode * 8191 + ((includeReferences) ? 131071 : 524287);

    hashCode = hashCode * 8191 + ((isSetIncludeNodeIDs()) ? 131071 : 524287);
    if (isSetIncludeNodeIDs())
      hashCode = hashCode * 8191 + ((includeNodeIDs) ? 131071 : 524287);

    hashCode = hashCode * 8191 + ((isSetIncludeContained()) ? 131071 : 524287);
    if (isSetIncludeContained())
      hashCode = hashCode * 8191 + ((includeContained) ? 131071 : 524287);

    hashCode = hashCode * 8191 + ((isSetEffectiveMetamodelIncludes()) ? 131071 : 524287);
    if (isSetEffectiveMetamodelIncludes())
      hashCode = hashCode * 8191 + effectiveMetamodelIncludes.hashCode();

    hashCode = hashCode * 8191 + ((isSetEffectiveMetamodelExcludes()) ? 131071 : 524287);
    if (isSetEffectiveMetamodelExcludes())
      hashCode = hashCode * 8191 + effectiveMetamodelExcludes.hashCode();

    hashCode = hashCode * 8191 + ((isSetIncludeDerived()) ? 131071 : 524287);
    if (isSetIncludeDerived())
      hashCode = hashCode * 8191 + ((includeDerived) ? 131071 : 524287);

    return hashCode;
  }

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

    int lastComparison = 0;

    lastComparison = java.lang.Boolean.valueOf(isSetRepositoryPattern()).compareTo(other.isSetRepositoryPattern());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetRepositoryPattern()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.repositoryPattern, other.repositoryPattern);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetFilePatterns()).compareTo(other.isSetFilePatterns());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetFilePatterns()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.filePatterns, other.filePatterns);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetDefaultNamespaces()).compareTo(other.isSetDefaultNamespaces());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetDefaultNamespaces()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.defaultNamespaces, other.defaultNamespaces);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetIncludeAttributes()).compareTo(other.isSetIncludeAttributes());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetIncludeAttributes()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.includeAttributes, other.includeAttributes);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetIncludeReferences()).compareTo(other.isSetIncludeReferences());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetIncludeReferences()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.includeReferences, other.includeReferences);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetIncludeNodeIDs()).compareTo(other.isSetIncludeNodeIDs());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetIncludeNodeIDs()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.includeNodeIDs, other.includeNodeIDs);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetIncludeContained()).compareTo(other.isSetIncludeContained());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetIncludeContained()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.includeContained, other.includeContained);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetEffectiveMetamodelIncludes()).compareTo(other.isSetEffectiveMetamodelIncludes());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetEffectiveMetamodelIncludes()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.effectiveMetamodelIncludes, other.effectiveMetamodelIncludes);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetEffectiveMetamodelExcludes()).compareTo(other.isSetEffectiveMetamodelExcludes());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetEffectiveMetamodelExcludes()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.effectiveMetamodelExcludes, other.effectiveMetamodelExcludes);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetIncludeDerived()).compareTo(other.isSetIncludeDerived());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetIncludeDerived()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.includeDerived, other.includeDerived);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    return 0;
  }

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

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

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

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

    if (isSetRepositoryPattern()) {
      sb.append("repositoryPattern:");
      if (this.repositoryPattern == null) {
        sb.append("null");
      } else {
        sb.append(this.repositoryPattern);
      }
      first = false;
    }
    if (isSetFilePatterns()) {
      if (!first) sb.append(", ");
      sb.append("filePatterns:");
      if (this.filePatterns == null) {
        sb.append("null");
      } else {
        sb.append(this.filePatterns);
      }
      first = false;
    }
    if (isSetDefaultNamespaces()) {
      if (!first) sb.append(", ");
      sb.append("defaultNamespaces:");
      if (this.defaultNamespaces == null) {
        sb.append("null");
      } else {
        sb.append(this.defaultNamespaces);
      }
      first = false;
    }
    if (isSetIncludeAttributes()) {
      if (!first) sb.append(", ");
      sb.append("includeAttributes:");
      sb.append(this.includeAttributes);
      first = false;
    }
    if (isSetIncludeReferences()) {
      if (!first) sb.append(", ");
      sb.append("includeReferences:");
      sb.append(this.includeReferences);
      first = false;
    }
    if (isSetIncludeNodeIDs()) {
      if (!first) sb.append(", ");
      sb.append("includeNodeIDs:");
      sb.append(this.includeNodeIDs);
      first = false;
    }
    if (isSetIncludeContained()) {
      if (!first) sb.append(", ");
      sb.append("includeContained:");
      sb.append(this.includeContained);
      first = false;
    }
    if (isSetEffectiveMetamodelIncludes()) {
      if (!first) sb.append(", ");
      sb.append("effectiveMetamodelIncludes:");
      if (this.effectiveMetamodelIncludes == null) {
        sb.append("null");
      } else {
        sb.append(this.effectiveMetamodelIncludes);
      }
      first = false;
    }
    if (isSetEffectiveMetamodelExcludes()) {
      if (!first) sb.append(", ");
      sb.append("effectiveMetamodelExcludes:");
      if (this.effectiveMetamodelExcludes == null) {
        sb.append("null");
      } else {
        sb.append(this.effectiveMetamodelExcludes);
      }
      first = false;
    }
    if (isSetIncludeDerived()) {
      if (!first) sb.append(", ");
      sb.append("includeDerived:");
      sb.append(this.includeDerived);
      first = false;
    }
    sb.append(")");
    return sb.toString();
  }

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

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

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

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

  private static class HawkQueryOptionsStandardScheme extends org.apache.thrift.scheme.StandardScheme<HawkQueryOptions> {

    public void read(org.apache.thrift.protocol.TProtocol iprot, HawkQueryOptions 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: // REPOSITORY_PATTERN
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.repositoryPattern = iprot.readString();
              struct.setRepositoryPatternIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 2: // FILE_PATTERNS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list112 = iprot.readListBegin();
                struct.filePatterns = new java.util.ArrayList<java.lang.String>(_list112.size);
                @org.apache.thrift.annotation.Nullable java.lang.String _elem113;
                for (int _i114 = 0; _i114 < _list112.size; ++_i114)
                {
                  _elem113 = iprot.readString();
                  struct.filePatterns.add(_elem113);
                }
                iprot.readListEnd();
              }
              struct.setFilePatternsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 3: // DEFAULT_NAMESPACES
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.defaultNamespaces = iprot.readString();
              struct.setDefaultNamespacesIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 4: // INCLUDE_ATTRIBUTES
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.includeAttributes = iprot.readBool();
              struct.setIncludeAttributesIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 5: // INCLUDE_REFERENCES
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.includeReferences = iprot.readBool();
              struct.setIncludeReferencesIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 6: // INCLUDE_NODE_IDS
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.includeNodeIDs = iprot.readBool();
              struct.setIncludeNodeIDsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 7: // INCLUDE_CONTAINED
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.includeContained = iprot.readBool();
              struct.setIncludeContainedIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 8: // EFFECTIVE_METAMODEL_INCLUDES
            if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
              {
                org.apache.thrift.protocol.TMap _map115 = iprot.readMapBegin();
                struct.effectiveMetamodelIncludes = new java.util.HashMap<java.lang.String,java.util.Map<java.lang.String,java.util.Set<java.lang.String>>>(2*_map115.size);
                @org.apache.thrift.annotation.Nullable java.lang.String _key116;
                @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.util.Set<java.lang.String>> _val117;
                for (int _i118 = 0; _i118 < _map115.size; ++_i118)
                {
                  _key116 = iprot.readString();
                  {
                    org.apache.thrift.protocol.TMap _map119 = iprot.readMapBegin();
                    _val117 = new java.util.HashMap<java.lang.String,java.util.Set<java.lang.String>>(2*_map119.size);
                    @org.apache.thrift.annotation.Nullable java.lang.String _key120;
                    @org.apache.thrift.annotation.Nullable java.util.Set<java.lang.String> _val121;
                    for (int _i122 = 0; _i122 < _map119.size; ++_i122)
                    {
                      _key120 = iprot.readString();
                      {
                        org.apache.thrift.protocol.TSet _set123 = iprot.readSetBegin();
                        _val121 = new java.util.HashSet<java.lang.String>(2*_set123.size);
                        @org.apache.thrift.annotation.Nullable java.lang.String _elem124;
                        for (int _i125 = 0; _i125 < _set123.size; ++_i125)
                        {
                          _elem124 = iprot.readString();
                          _val121.add(_elem124);
                        }
                        iprot.readSetEnd();
                      }
                      _val117.put(_key120, _val121);
                    }
                    iprot.readMapEnd();
                  }
                  struct.effectiveMetamodelIncludes.put(_key116, _val117);
                }
                iprot.readMapEnd();
              }
              struct.setEffectiveMetamodelIncludesIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 9: // EFFECTIVE_METAMODEL_EXCLUDES
            if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
              {
                org.apache.thrift.protocol.TMap _map126 = iprot.readMapBegin();
                struct.effectiveMetamodelExcludes = new java.util.HashMap<java.lang.String,java.util.Map<java.lang.String,java.util.Set<java.lang.String>>>(2*_map126.size);
                @org.apache.thrift.annotation.Nullable java.lang.String _key127;
                @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.util.Set<java.lang.String>> _val128;
                for (int _i129 = 0; _i129 < _map126.size; ++_i129)
                {
                  _key127 = iprot.readString();
                  {
                    org.apache.thrift.protocol.TMap _map130 = iprot.readMapBegin();
                    _val128 = new java.util.HashMap<java.lang.String,java.util.Set<java.lang.String>>(2*_map130.size);
                    @org.apache.thrift.annotation.Nullable java.lang.String _key131;
                    @org.apache.thrift.annotation.Nullable java.util.Set<java.lang.String> _val132;
                    for (int _i133 = 0; _i133 < _map130.size; ++_i133)
                    {
                      _key131 = iprot.readString();
                      {
                        org.apache.thrift.protocol.TSet _set134 = iprot.readSetBegin();
                        _val132 = new java.util.HashSet<java.lang.String>(2*_set134.size);
                        @org.apache.thrift.annotation.Nullable java.lang.String _elem135;
                        for (int _i136 = 0; _i136 < _set134.size; ++_i136)
                        {
                          _elem135 = iprot.readString();
                          _val132.add(_elem135);
                        }
                        iprot.readSetEnd();
                      }
                      _val128.put(_key131, _val132);
                    }
                    iprot.readMapEnd();
                  }
                  struct.effectiveMetamodelExcludes.put(_key127, _val128);
                }
                iprot.readMapEnd();
              }
              struct.setEffectiveMetamodelExcludesIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 10: // INCLUDE_DERIVED
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.includeDerived = iprot.readBool();
              struct.setIncludeDerivedIsSet(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, HawkQueryOptions struct) throws org.apache.thrift.TException {
      struct.validate();

      oprot.writeStructBegin(STRUCT_DESC);
      if (struct.repositoryPattern != null) {
        if (struct.isSetRepositoryPattern()) {
          oprot.writeFieldBegin(REPOSITORY_PATTERN_FIELD_DESC);
          oprot.writeString(struct.repositoryPattern);
          oprot.writeFieldEnd();
        }
      }
      if (struct.filePatterns != null) {
        if (struct.isSetFilePatterns()) {
          oprot.writeFieldBegin(FILE_PATTERNS_FIELD_DESC);
          {
            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.filePatterns.size()));
            for (java.lang.String _iter137 : struct.filePatterns)
            {
              oprot.writeString(_iter137);
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      if (struct.defaultNamespaces != null) {
        if (struct.isSetDefaultNamespaces()) {
          oprot.writeFieldBegin(DEFAULT_NAMESPACES_FIELD_DESC);
          oprot.writeString(struct.defaultNamespaces);
          oprot.writeFieldEnd();
        }
      }
      if (struct.isSetIncludeAttributes()) {
        oprot.writeFieldBegin(INCLUDE_ATTRIBUTES_FIELD_DESC);
        oprot.writeBool(struct.includeAttributes);
        oprot.writeFieldEnd();
      }
      if (struct.isSetIncludeReferences()) {
        oprot.writeFieldBegin(INCLUDE_REFERENCES_FIELD_DESC);
        oprot.writeBool(struct.includeReferences);
        oprot.writeFieldEnd();
      }
      if (struct.isSetIncludeNodeIDs()) {
        oprot.writeFieldBegin(INCLUDE_NODE_IDS_FIELD_DESC);
        oprot.writeBool(struct.includeNodeIDs);
        oprot.writeFieldEnd();
      }
      if (struct.isSetIncludeContained()) {
        oprot.writeFieldBegin(INCLUDE_CONTAINED_FIELD_DESC);
        oprot.writeBool(struct.includeContained);
        oprot.writeFieldEnd();
      }
      if (struct.effectiveMetamodelIncludes != null) {
        if (struct.isSetEffectiveMetamodelIncludes()) {
          oprot.writeFieldBegin(EFFECTIVE_METAMODEL_INCLUDES_FIELD_DESC);
          {
            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, struct.effectiveMetamodelIncludes.size()));
            for (java.util.Map.Entry<java.lang.String, java.util.Map<java.lang.String,java.util.Set<java.lang.String>>> _iter138 : struct.effectiveMetamodelIncludes.entrySet())
            {
              oprot.writeString(_iter138.getKey());
              {
                oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.SET, _iter138.getValue().size()));
                for (java.util.Map.Entry<java.lang.String, java.util.Set<java.lang.String>> _iter139 : _iter138.getValue().entrySet())
                {
                  oprot.writeString(_iter139.getKey());
                  {
                    oprot.writeSetBegin(new org.apache.thrift.protocol.TSet(org.apache.thrift.protocol.TType.STRING, _iter139.getValue().size()));
                    for (java.lang.String _iter140 : _iter139.getValue())
                    {
                      oprot.writeString(_iter140);
                    }
                    oprot.writeSetEnd();
                  }
                }
                oprot.writeMapEnd();
              }
            }
            oprot.writeMapEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      if (struct.effectiveMetamodelExcludes != null) {
        if (struct.isSetEffectiveMetamodelExcludes()) {
          oprot.writeFieldBegin(EFFECTIVE_METAMODEL_EXCLUDES_FIELD_DESC);
          {
            oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, struct.effectiveMetamodelExcludes.size()));
            for (java.util.Map.Entry<java.lang.String, java.util.Map<java.lang.String,java.util.Set<java.lang.String>>> _iter141 : struct.effectiveMetamodelExcludes.entrySet())
            {
              oprot.writeString(_iter141.getKey());
              {
                oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.SET, _iter141.getValue().size()));
                for (java.util.Map.Entry<java.lang.String, java.util.Set<java.lang.String>> _iter142 : _iter141.getValue().entrySet())
                {
                  oprot.writeString(_iter142.getKey());
                  {
                    oprot.writeSetBegin(new org.apache.thrift.protocol.TSet(org.apache.thrift.protocol.TType.STRING, _iter142.getValue().size()));
                    for (java.lang.String _iter143 : _iter142.getValue())
                    {
                      oprot.writeString(_iter143);
                    }
                    oprot.writeSetEnd();
                  }
                }
                oprot.writeMapEnd();
              }
            }
            oprot.writeMapEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      if (struct.isSetIncludeDerived()) {
        oprot.writeFieldBegin(INCLUDE_DERIVED_FIELD_DESC);
        oprot.writeBool(struct.includeDerived);
        oprot.writeFieldEnd();
      }
      oprot.writeFieldStop();
      oprot.writeStructEnd();
    }

  }

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

  private static class HawkQueryOptionsTupleScheme extends org.apache.thrift.scheme.TupleScheme<HawkQueryOptions> {

    @Override
    public void write(org.apache.thrift.protocol.TProtocol prot, HawkQueryOptions struct) throws org.apache.thrift.TException {
      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
      java.util.BitSet optionals = new java.util.BitSet();
      if (struct.isSetRepositoryPattern()) {
        optionals.set(0);
      }
      if (struct.isSetFilePatterns()) {
        optionals.set(1);
      }
      if (struct.isSetDefaultNamespaces()) {
        optionals.set(2);
      }
      if (struct.isSetIncludeAttributes()) {
        optionals.set(3);
      }
      if (struct.isSetIncludeReferences()) {
        optionals.set(4);
      }
      if (struct.isSetIncludeNodeIDs()) {
        optionals.set(5);
      }
      if (struct.isSetIncludeContained()) {
        optionals.set(6);
      }
      if (struct.isSetEffectiveMetamodelIncludes()) {
        optionals.set(7);
      }
      if (struct.isSetEffectiveMetamodelExcludes()) {
        optionals.set(8);
      }
      if (struct.isSetIncludeDerived()) {
        optionals.set(9);
      }
      oprot.writeBitSet(optionals, 10);
      if (struct.isSetRepositoryPattern()) {
        oprot.writeString(struct.repositoryPattern);
      }
      if (struct.isSetFilePatterns()) {
        {
          oprot.writeI32(struct.filePatterns.size());
          for (java.lang.String _iter144 : struct.filePatterns)
          {
            oprot.writeString(_iter144);
          }
        }
      }
      if (struct.isSetDefaultNamespaces()) {
        oprot.writeString(struct.defaultNamespaces);
      }
      if (struct.isSetIncludeAttributes()) {
        oprot.writeBool(struct.includeAttributes);
      }
      if (struct.isSetIncludeReferences()) {
        oprot.writeBool(struct.includeReferences);
      }
      if (struct.isSetIncludeNodeIDs()) {
        oprot.writeBool(struct.includeNodeIDs);
      }
      if (struct.isSetIncludeContained()) {
        oprot.writeBool(struct.includeContained);
      }
      if (struct.isSetEffectiveMetamodelIncludes()) {
        {
          oprot.writeI32(struct.effectiveMetamodelIncludes.size());
          for (java.util.Map.Entry<java.lang.String, java.util.Map<java.lang.String,java.util.Set<java.lang.String>>> _iter145 : struct.effectiveMetamodelIncludes.entrySet())
          {
            oprot.writeString(_iter145.getKey());
            {
              oprot.writeI32(_iter145.getValue().size());
              for (java.util.Map.Entry<java.lang.String, java.util.Set<java.lang.String>> _iter146 : _iter145.getValue().entrySet())
              {
                oprot.writeString(_iter146.getKey());
                {
                  oprot.writeI32(_iter146.getValue().size());
                  for (java.lang.String _iter147 : _iter146.getValue())
                  {
                    oprot.writeString(_iter147);
                  }
                }
              }
            }
          }
        }
      }
      if (struct.isSetEffectiveMetamodelExcludes()) {
        {
          oprot.writeI32(struct.effectiveMetamodelExcludes.size());
          for (java.util.Map.Entry<java.lang.String, java.util.Map<java.lang.String,java.util.Set<java.lang.String>>> _iter148 : struct.effectiveMetamodelExcludes.entrySet())
          {
            oprot.writeString(_iter148.getKey());
            {
              oprot.writeI32(_iter148.getValue().size());
              for (java.util.Map.Entry<java.lang.String, java.util.Set<java.lang.String>> _iter149 : _iter148.getValue().entrySet())
              {
                oprot.writeString(_iter149.getKey());
                {
                  oprot.writeI32(_iter149.getValue().size());
                  for (java.lang.String _iter150 : _iter149.getValue())
                  {
                    oprot.writeString(_iter150);
                  }
                }
              }
            }
          }
        }
      }
      if (struct.isSetIncludeDerived()) {
        oprot.writeBool(struct.includeDerived);
      }
    }

    @Override
    public void read(org.apache.thrift.protocol.TProtocol prot, HawkQueryOptions struct) throws org.apache.thrift.TException {
      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
      java.util.BitSet incoming = iprot.readBitSet(10);
      if (incoming.get(0)) {
        struct.repositoryPattern = iprot.readString();
        struct.setRepositoryPatternIsSet(true);
      }
      if (incoming.get(1)) {
        {
          org.apache.thrift.protocol.TList _list151 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
          struct.filePatterns = new java.util.ArrayList<java.lang.String>(_list151.size);
          @org.apache.thrift.annotation.Nullable java.lang.String _elem152;
          for (int _i153 = 0; _i153 < _list151.size; ++_i153)
          {
            _elem152 = iprot.readString();
            struct.filePatterns.add(_elem152);
          }
        }
        struct.setFilePatternsIsSet(true);
      }
      if (incoming.get(2)) {
        struct.defaultNamespaces = iprot.readString();
        struct.setDefaultNamespacesIsSet(true);
      }
      if (incoming.get(3)) {
        struct.includeAttributes = iprot.readBool();
        struct.setIncludeAttributesIsSet(true);
      }
      if (incoming.get(4)) {
        struct.includeReferences = iprot.readBool();
        struct.setIncludeReferencesIsSet(true);
      }
      if (incoming.get(5)) {
        struct.includeNodeIDs = iprot.readBool();
        struct.setIncludeNodeIDsIsSet(true);
      }
      if (incoming.get(6)) {
        struct.includeContained = iprot.readBool();
        struct.setIncludeContainedIsSet(true);
      }
      if (incoming.get(7)) {
        {
          org.apache.thrift.protocol.TMap _map154 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, iprot.readI32());
          struct.effectiveMetamodelIncludes = new java.util.HashMap<java.lang.String,java.util.Map<java.lang.String,java.util.Set<java.lang.String>>>(2*_map154.size);
          @org.apache.thrift.annotation.Nullable java.lang.String _key155;
          @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.util.Set<java.lang.String>> _val156;
          for (int _i157 = 0; _i157 < _map154.size; ++_i157)
          {
            _key155 = iprot.readString();
            {
              org.apache.thrift.protocol.TMap _map158 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.SET, iprot.readI32());
              _val156 = new java.util.HashMap<java.lang.String,java.util.Set<java.lang.String>>(2*_map158.size);
              @org.apache.thrift.annotation.Nullable java.lang.String _key159;
              @org.apache.thrift.annotation.Nullable java.util.Set<java.lang.String> _val160;
              for (int _i161 = 0; _i161 < _map158.size; ++_i161)
              {
                _key159 = iprot.readString();
                {
                  org.apache.thrift.protocol.TSet _set162 = new org.apache.thrift.protocol.TSet(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
                  _val160 = new java.util.HashSet<java.lang.String>(2*_set162.size);
                  @org.apache.thrift.annotation.Nullable java.lang.String _elem163;
                  for (int _i164 = 0; _i164 < _set162.size; ++_i164)
                  {
                    _elem163 = iprot.readString();
                    _val160.add(_elem163);
                  }
                }
                _val156.put(_key159, _val160);
              }
            }
            struct.effectiveMetamodelIncludes.put(_key155, _val156);
          }
        }
        struct.setEffectiveMetamodelIncludesIsSet(true);
      }
      if (incoming.get(8)) {
        {
          org.apache.thrift.protocol.TMap _map165 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.MAP, iprot.readI32());
          struct.effectiveMetamodelExcludes = new java.util.HashMap<java.lang.String,java.util.Map<java.lang.String,java.util.Set<java.lang.String>>>(2*_map165.size);
          @org.apache.thrift.annotation.Nullable java.lang.String _key166;
          @org.apache.thrift.annotation.Nullable java.util.Map<java.lang.String,java.util.Set<java.lang.String>> _val167;
          for (int _i168 = 0; _i168 < _map165.size; ++_i168)
          {
            _key166 = iprot.readString();
            {
              org.apache.thrift.protocol.TMap _map169 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.SET, iprot.readI32());
              _val167 = new java.util.HashMap<java.lang.String,java.util.Set<java.lang.String>>(2*_map169.size);
              @org.apache.thrift.annotation.Nullable java.lang.String _key170;
              @org.apache.thrift.annotation.Nullable java.util.Set<java.lang.String> _val171;
              for (int _i172 = 0; _i172 < _map169.size; ++_i172)
              {
                _key170 = iprot.readString();
                {
                  org.apache.thrift.protocol.TSet _set173 = new org.apache.thrift.protocol.TSet(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
                  _val171 = new java.util.HashSet<java.lang.String>(2*_set173.size);
                  @org.apache.thrift.annotation.Nullable java.lang.String _elem174;
                  for (int _i175 = 0; _i175 < _set173.size; ++_i175)
                  {
                    _elem174 = iprot.readString();
                    _val171.add(_elem174);
                  }
                }
                _val167.put(_key170, _val171);
              }
            }
            struct.effectiveMetamodelExcludes.put(_key166, _val167);
          }
        }
        struct.setEffectiveMetamodelExcludesIsSet(true);
      }
      if (incoming.get(9)) {
        struct.includeDerived = iprot.readBool();
        struct.setIncludeDerivedIsSet(true);
      }
    }
  }

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

