### Question:
MultiGraph implements Graph { public Edge getEdge(Object id) { Collection<Edge> baseEdges = new LinkedList<Edge>(); for (Graph g : bases) { Edge e = g.getEdge(id); if (null != e) { baseEdges.add(e); } } if (baseEdges.size() > 0) { return new MultiEdge(this, id, baseEdges); } else { return null; } } MultiGraph(final Graph... bases); Vertex addVertex(Object id); Vertex getVertex(Object id); void removeVertex(Vertex vertex); Edge addEdge(Object id, Vertex outVertex, Vertex inVertex, String label); Edge getEdge(Object id); void removeEdge(Edge edge); Iterable<Vertex> getVertices(); Iterable<Edge> getEdges(); void clear(); void shutdown();  }### Answer:
@Test(expected = UnsupportedOperationException.class) public void testRemoveEdgePropertyUnsupported() throws Exception { Edge e = graph.getEdge("Arthur knows Ford"); e.removeProperty("comment"); }
@Test public void testEdgeProperties() throws Exception { Edge e = graph.getEdge("Arthur knows Ford"); assertEquals("but not very well", e.getProperty("comment")); }
@Test(expected = UnsupportedOperationException.class) public void testSetEdgePropertyUnsupported() throws Exception { Edge e = graph.getEdge("Arthur knows Ford"); e.setProperty("comment", "for several years"); }