@Override
    public boolean equals(Object obj) {
      if (this == obj) {
        return true;
      }
      if (obj == null) {
        return false;
      }
      if (getClass() != obj.getClass()) {
        return false;
      }
      ValueObject other = (ValueObject) obj;

      if (firstName == null) {
        if (other.firstName != null) {
          return false;
        }
      } else if (!firstName.equals(other.firstName)) {
        return false;
      }
      if (lastName == null) {
        if (other.lastName != null) {
          return false;
        }
      } else if (!lastName.equals(other.lastName)) {
        return false;
      }
      return true;
    }