class DataCharacter {

  private final int value;
  private final int checksumPortion;

  public DataCharacter(int value, int checksumPortion) {
    this.value = value;
    this.checksumPortion = checksumPortion;
  }

  public final int getValue() {
    return value;
  }

  public final int getChecksumPortion() {
    return checksumPortion;
  }

  @Override
  public final String toString() {
    return value + "(" + checksumPortion + ')';
  }

  @Override
  public final boolean equals(Object o) {<FILL_FUNCTION_BODY>}

  @Override
  public final int hashCode() {
    return value ^ checksumPortion;
  }

}

    if (!(o instanceof DataCharacter)) {
      return false;
    }
    DataCharacter that = (DataCharacter) o;
    return value == that.value && checksumPortion == that.checksumPortion;
  
<no_super_class>