class Range {

  private final int fromPos;
  private final int toPos;
  private final String lang;


  Range(int fromPos, int toPos, String lang) {
    this.fromPos = fromPos;
    this.toPos = toPos;
    this.lang = Objects.requireNonNull(lang);
  }

  public int getFromPos() {
    return fromPos;
  }

  public int getToPos() {
    return toPos;
  }

  public String getLang() {
    return lang;
  }

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

  @Override
  public int hashCode() {
    return Objects.hash(fromPos, toPos, lang);
  }
}

    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    Range range = (Range) o;
    return fromPos == range.fromPos && toPos == range.toPos && lang.equals(range.lang);
  
<no_super_class>