DefaultVersionRange implements VersionRange { @Override public int hashCode() { HashCodeBuilder builder = new HashCodeBuilder(17, 31); builder.append(this.upperBound); builder.append(this.upperBoundInclusive ? 1 : 0); builder.append(this.lowerBound); builder.append(this.lowerBoundInclusive ? 1 : 0); return builder.toHashCode(); } DefaultVersionRange(String rawRange);  DefaultVersionRange(Version lowerBound, boolean lowerBoundInclusive, Version upperBound,
        boolean upperBoundInclusive); Version getLowerBound(); Version getUpperBound(); @Override boolean containsVersion(Version version); boolean containsVersion(DefaultVersion version); @Override String getValue(); @Override boolean isCompatible(VersionRange otherRange); boolean isCompatible(DefaultVersionRange otherRange); @Override String toString(); @Override int hashCode(); @Override boolean equals(Object obj); boolean equals(DefaultVersionRange version);  }
@Test void testHashCode() throws InvalidVersionRangeException { assertEquals(new DefaultVersionRange("[1.0,2.0]").hashCode(), new DefaultVersionRange("[1.0,2.0]").hashCode()); assertEquals(new DefaultVersionRange("[1.0]").hashCode(), new DefaultVersionRange("[1.0,1.0]").hashCode()); assertNotEquals(new DefaultVersionRange("[1.0,2.0)").hashCode(), new DefaultVersionRange("[1.0.2.0]").hashCode()); }