FeatureRange extends PredicateValue { @Override public int hashCode() { return ((key.hashCode() + (from != null ? from.hashCode() : 0)) * 31 + (to != null ? to.hashCode() : 0)) * 31; } FeatureRange(String key);  FeatureRange(String key, Long fromInclusive, Long toInclusive); FeatureRange setKey(String key); String getKey(); FeatureRange setFromInclusive(Long from); Long getFromInclusive(); FeatureRange setToInclusive(Long to); Long getToInclusive(); void addPartition(RangePartition p); List<RangeEdgePartition> getEdgePartitions(); List<RangePartition> getPartitions(); void clearPartitions(); @Override FeatureRange clone(); @Override int hashCode(); @Override boolean equals(Object obj); static FeatureRange buildFromMixedIn(String key, List<String> partitions, int arity);  }
@Test public void requireThatHashCodeIsImplemented() { assertEquals(new FeatureRange("key").hashCode(), new FeatureRange("key").hashCode()); }