### Question:
PartialPlainStreetEdge extends PlainStreetEdge { @Override public boolean isReverseOf(Edge e) { Edge other = e; if (e instanceof PartialPlainStreetEdge) { other = ((PartialPlainStreetEdge) e).getParentEdge(); } return parentEdge.isReverseOf(other); } PartialPlainStreetEdge(StreetEdge parentEdge, StreetVertex v1, StreetVertex v2,
            LineString geometry, String name, double length, StreetTraversalPermission permission,
            boolean back);  PartialPlainStreetEdge(StreetEdge parentEdge, StreetVertex v1, StreetVertex v2,
            LineString geometry, String name, double length); @Override boolean isPartial(); @Override int getId(); @Override int getInAngle(); @Override int getOutAngle(); @Override boolean isEquivalentTo(Edge e); @Override boolean isReverseOf(Edge e); @Override boolean isRoundabout(); boolean isTrivial(); @Override String toString();  }### Answer:
@Test public void testReverseEdge() { PartialPlainStreetEdge pEdge1 = new PartialPlainStreetEdge(e1, v1, v2, e1.getGeometry(), "partial e1", e1.getLength()); PartialPlainStreetEdge pEdge2 = new PartialPlainStreetEdge(e1Reverse, v2, v1, e1Reverse.getGeometry(), "partial e2", e1Reverse.getLength()); assertFalse(e1.isReverseOf(pEdge1)); assertFalse(pEdge1.isReverseOf(e1)); assertFalse(e1Reverse.isReverseOf(pEdge2)); assertFalse(pEdge2.isReverseOf(e1Reverse)); assertTrue(e1.isReverseOf(pEdge2)); assertTrue(e1Reverse.isReverseOf(pEdge1)); assertTrue(e1Reverse.isReverseOf(e1)); assertTrue(e1.isReverseOf(e1Reverse)); assertTrue(pEdge1.isReverseOf(pEdge2)); assertTrue(pEdge2.isReverseOf(pEdge1)); }