  Line 9) range(Position.UNKNOWN, Position.UNKNOWN) ==> com.github.javaparser.Range.range(com.github.javaparser.Position, com.github.javaparser.Position)
  Line 30) pos(beginLine, beginColumn) ==> com.github.javaparser.Position.pos(int, int)
  Line 30) pos(endLine, endColumn) ==> com.github.javaparser.Position.pos(int, int)
  Line 34) range(begin.withColumn(column), end) ==> com.github.javaparser.Range.range(com.github.javaparser.Position, com.github.javaparser.Position)
  Line 34) begin.withColumn(column) ==> com.github.javaparser.Position.withColumn(int)
  Line 38) range(begin.withLine(line), end) ==> com.github.javaparser.Range.range(com.github.javaparser.Position, com.github.javaparser.Position)
  Line 38) begin.withLine(line) ==> com.github.javaparser.Position.withLine(int)
  Line 42) range(begin, end.withColumn(column)) ==> com.github.javaparser.Range.range(com.github.javaparser.Position, com.github.javaparser.Position)
  Line 42) end.withColumn(column) ==> com.github.javaparser.Position.withColumn(int)
  Line 46) range(begin, end.withLine(line)) ==> com.github.javaparser.Range.range(com.github.javaparser.Position, com.github.javaparser.Position)
  Line 46) end.withLine(line) ==> com.github.javaparser.Position.withLine(int)
  Line 50) range(begin, this.end) ==> com.github.javaparser.Range.range(com.github.javaparser.Position, com.github.javaparser.Position)
  Line 54) range(this.begin, end) ==> com.github.javaparser.Range.range(com.github.javaparser.Position, com.github.javaparser.Position)
  Line 58) begin.isBefore(other.begin) ==> com.github.javaparser.Position.isBefore(com.github.javaparser.Position)
  Line 58) end.isAfter(other.end) ==> com.github.javaparser.Position.isAfter(com.github.javaparser.Position)
  Line 62) end.isBefore(position) ==> com.github.javaparser.Position.isBefore(com.github.javaparser.Position)
  Line 66) begin.isAfter(position) ==> com.github.javaparser.Position.isAfter(com.github.javaparser.Position)
  Line 72) getClass() ==> java.lang.Object.getClass()
  Line 72) o.getClass() ==> java.lang.Object.getClass()
  Line 76) begin.equals(range.begin) ==> com.github.javaparser.Position.equals(java.lang.Object)
  Line 76) end.equals(range.end) ==> com.github.javaparser.Position.equals(java.lang.Object)
  Line 82) begin.hashCode() ==> com.github.javaparser.Position.hashCode()
  Line 82) end.hashCode() ==> com.github.javaparser.Position.hashCode()
