@Override
    public void insertEdge(E edge) {
        checkNotNull(edge, "Edge cannot be null");
        checkArgument(edges.isEmpty() || src().equals(edge.dst()),
                      "Edge destination must be the same as the current path source");
        edges.add(0, edge);
    }
@Test
    public void insertEdge() {
        MutablePath<TestVertex, TestEdge> p = new DefaultMutablePath<>();
        p.insertEdge(new TestEdge(B, C));
        p.insertEdge(new TestEdge(A, B));
        validatePath(p, A, C, 2);
    }