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

    boolean this_present_interpretations = true && this.isSetInterpretations();
    boolean that_present_interpretations = true && that.isSetInterpretations();
    if (this_present_interpretations || that_present_interpretations) {
      if (!(this_present_interpretations && that_present_interpretations)) return false;
      if (!this.interpretations.equals(that.interpretations)) return false;
    }

    boolean this_present_debugLines = true && this.isSetDebugLines();
    boolean that_present_debugLines = true && that.isSetDebugLines();
    if (this_present_debugLines || that_present_debugLines) {
      if (!(this_present_debugLines && that_present_debugLines)) return false;
      if (!this.debugLines.equals(that.debugLines)) return false;
    }

    boolean this_present_requestWktGeometry = true && this.isSetRequestWktGeometry();
    boolean that_present_requestWktGeometry = true && that.isSetRequestWktGeometry();
    if (this_present_requestWktGeometry || that_present_requestWktGeometry) {
      if (!(this_present_requestWktGeometry && that_present_requestWktGeometry)) return false;
      if (!this.requestWktGeometry.equals(that.requestWktGeometry)) return false;
    }

    return true;
  }
  public int compareTo(GeocodeResponse other) {
    if (!getClass().equals(other.getClass())) {
      return getClass().getName().compareTo(other.getClass().getName());
    }

    int lastComparison = 0;
    GeocodeResponse typedOther = (GeocodeResponse) other;

    lastComparison =
        Boolean.valueOf(isSetInterpretations()).compareTo(typedOther.isSetInterpretations());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetInterpretations()) {
      lastComparison = TBaseHelper.compareTo(this.interpretations, typedOther.interpretations);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetDebugLines()).compareTo(typedOther.isSetDebugLines());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetDebugLines()) {
      lastComparison = TBaseHelper.compareTo(this.debugLines, typedOther.debugLines);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison =
        Boolean.valueOf(isSetRequestWktGeometry()).compareTo(typedOther.isSetRequestWktGeometry());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetRequestWktGeometry()) {
      lastComparison =
          TBaseHelper.compareTo(this.requestWktGeometry, typedOther.requestWktGeometry);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    return 0;
  }
 /** Performs a deep copy on <i>other</i>. */
 public GeocodeResponse(GeocodeResponse other) {
   if (other.isSetInterpretations()) {
     List<GeocodeInterpretation> __this__interpretations = new ArrayList<GeocodeInterpretation>();
     for (GeocodeInterpretation other_element : other.interpretations) {
       __this__interpretations.add(new GeocodeInterpretation(other_element));
     }
     this.interpretations = __this__interpretations;
   }
   if (other.isSetDebugLines()) {
     List<String> __this__debugLines = new ArrayList<String>();
     for (String other_element : other.debugLines) {
       __this__debugLines.add(other_element);
     }
     this.debugLines = __this__debugLines;
   }
   if (other.isSetRequestWktGeometry()) {
     this.requestWktGeometry = other.requestWktGeometry;
   }
 }