### Question:
Node implements Bounded, Comparable<Node> { public abstract Map<String, Object> getExtraData();  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:
public @Test void testNestedExtraData() throws Exception { Map<String, Object> map1, map2, extraData; map1 = new HashMap<>(); map2 = new TreeMap<>(); map1.put("long", Long.valueOf(123)); map2.put("long", Long.valueOf(123)); map1.put("int", Integer.valueOf(456)); map2.put("int", Integer.valueOf(456)); map1.put("string", "hello"); map2.put("string", "hello"); map1.put("geom", geom("LINESTRING(1 1, 1.1 2.1, 100 1000)")); map2.put("geom", geom("LINESTRING(1 1, 1.1 2.1, 100 1000)")); extraData = ImmutableMap.of("I", (Object) "am", "a", (Object) "different", "map than", (Object) map1, "and", (Object) map2); Node n = RevObjectFactory.defaultInstance().createNode("fid", RevTree.EMPTY_TREE_ID, ObjectId.NULL, TYPE.FEATURE, null, extraData); Map<String, Object> actual = n.getExtraData(); assertEqualsFully(extraData, actual); }