Range { @Override public int hashCode() { return Objects.hash(start, inclusiveStart, end, inclusiveEnd); } Range(T start, boolean inclusiveStart, T end, boolean inclusiveEnd); T getStart(); boolean isInclusiveStart(); T getEnd(); boolean isInclusiveEnd(); boolean isInRange(Object obj); @Override String toString(); @Override boolean equals(Object o); @Override int hashCode();  }
@SuppressWarnings("ResultOfMethodCallIgnored") @Test public void testHashCode() { IdRange range = new IdRange(null, null); range.hashCode(); range = new IdRange("a", null); range.hashCode(); range = new IdRange(null, "a"); range.hashCode(); range = new IdRange("a", "a"); range.hashCode(); }