@Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (!(o instanceof FundingContributor)) {
      return false;
    }

    FundingContributor that = (FundingContributor) o;

    if (contributorAttributes != null
        ? !contributorAttributes.equals(that.contributorAttributes)
        : that.contributorAttributes != null) {
      return false;
    }
    if (contributorEmail != null
        ? !contributorEmail.equals(that.contributorEmail)
        : that.contributorEmail != null) {
      return false;
    }
    if (contributorOrcid != null
        ? !contributorOrcid.equals(that.contributorOrcid)
        : that.contributorOrcid != null) {
      return false;
    }
    if (creditName != null ? !creditName.equals(that.creditName) : that.creditName != null) {
      return false;
    }

    return true;
  }
 @Override
 public int hashCode() {
   int result = contributorOrcid != null ? contributorOrcid.hashCode() : 0;
   result = 31 * result + (creditName != null ? creditName.hashCode() : 0);
   result = 31 * result + (contributorEmail != null ? contributorEmail.hashCode() : 0);
   result = 31 * result + (contributorAttributes != null ? contributorAttributes.hashCode() : 0);
   return result;
 }