### Question:
Node implements Bounded, Comparable<Node> { public final @Override int compareTo(Node o) { int c = getName().compareTo(o.getName()); if (c == 0) { c = getType().compareTo(o.getType()); } if (c == 0) { c = getObjectId().compareTo(o.getObjectId()); } return c; }  abstract TYPE getType(); abstract String getName(); abstract Optional<ObjectId> getMetadataId(); abstract Map<String, Object> getExtraData(); @Nullable Object getExtraData(String key); final @Override int compareTo(Node o); final @Override int hashCode(); final @Override boolean equals(Object o); @Override String toString(); Node update(final ObjectId newId); Node update(final ObjectId newId, final @Nullable Envelope newBounds);  }### Answer:
@Test public void testCompareTo() { Node node = RevObjectFactory.defaultInstance().createNode("Points.1", ObjectId.valueOf("abc123000000000000001234567890abcdef0000"), ObjectId.NULL, TYPE.FEATURE, null, null); Node node2 = RevObjectFactory.defaultInstance().createNode("Lines.1", ObjectId.valueOf("abc123000000000000001234567890abcdef0001"), ObjectId.NULL, TYPE.FEATURE, null, null); assertTrue(node.compareTo(node2) > 0); assertTrue(node2.compareTo(node) < 0); assertTrue(node.compareTo(node) == 0); }