class ConfusionString {

  private final String str;
  private final String description;

  ConfusionString(String str, String description) {
    this.str = Objects.requireNonNull(str);
    this.description = description;
  }

  public String getString() {
    return str;
  }

  @Nullable
  public String getDescription() {
    return description;
  }

  @Override
  public String toString() {
    return str;
  }

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

  @Override
  public int hashCode() {
    return Objects.hash(str, description);
  }
}

    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    ConfusionString other = (ConfusionString) o;
    return Objects.equals(str, other.str) && Objects.equals(description, other.description);
  
<no_super_class>