import java.util.List;
public abstract class Baz {
    static interface Node<N extends Node<N,E>, E extends Edge<N,E>> {
	List<E> edges();
	boolean isEqual(N n);
    }
    static interface Edge<N extends Node<N,E>, E extends Edge<N,E>> {
	N source();
	N dest();
    }

    static <N extends Node<N,E>, E extends Edge<N,E>>
				    List<N> findPath(N source, N dest) {
	return null;
    }

    static class MyNode implements Node<MyNode,MyEdge> {
	public List<MyEdge> edges() { return null; }
	public boolean isEqual(MyNode n) { return true; }
    }
    static class MyEdge implements Edge<MyNode,MyEdge> {
	public MyNode source() { return null; }
	public MyNode dest() { return null; }
    }

    public static void main(String[] args) {
	MyNode a = new MyNode(), b = new MyNode();
	List<MyNode> l = findPath(a, b);
    }
}
