FeatureRange extends PredicateValue { @Override public FeatureRange clone() throws CloneNotSupportedException { return (FeatureRange)super.clone(); } 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 requireThatCloneIsImplemented() throws CloneNotSupportedException { FeatureRange node1 = new FeatureRange("foo", 6L, 9L); FeatureRange node2 = node1.clone(); assertEquals(node1, node2); assertNotSame(node1, node2); }