public boolean equals(Object o) {
      if (this == o) return true;
      if (!(o instanceof TestClass)) return false;

      TestClass obj = (TestClass) o;

      return ((this.field1 == obj.getField1()
              || (this.field1 != null && this.field1.equals(obj.getField1())))
          && (this.field2 == obj.getField2()
              || (this.field2 != null && this.field2.equals(obj.getField2())))
          && (this.field3 == obj.getField3()
              || (this.field3 != null && this.field3.equals(obj.getField3()))));
    }