@Override
  public boolean equals(final Object other) {
    if (other == this) {
      return true;
    } else if (other != null && other.getClass().equals(this.getClass())) {
      final Identifier him = (Identifier)other;

      final Object value = this.getValue();
      if (value == null) {
        if (him.getValue() != null) {
          return false;
        }
      } else if (!value.equals(him.getValue())) {
        return false;
      }

      final Object idType = this.getIdType();
      if (idType == null) {
        if (him.getIdType() != null) {
          return false;
        }
      } else if (!idType.equals(him.getIdType())) {
        return false;
      }

      return true;
    } else {
      return false;
    }
  }