import EDU.neu.ccs.demeter.dj.*; class Main { public static void main(String[] args) { ClassGraph cg = new ClassGraph(); // constructed from *.java A a = new A(new B(new D()), new C()); // cg.traverse(a, new StrategyGraph("A->D"), new MyVisitor()); Strategy sg = new Strategy("from A to D"); TraversalGraph tg = TraversalGraph.compute(cg, sg); Integer res = (Integer) tg.traverse(a, new Visitor(){ public void start() { System.out.println("begin");} public void finish() { System.out.println("end"); } public void before(A o) { System.out.println("before A"); } public void after(A o) { System.out.println("after A"); } public void before(B o) { System.out.println("before B"); } public void after(B o) { System.out.println("after B"); } public void before(C o) { System.out.println("before C"); } public void after(C o) { System.out.println("after C"); } public void before(D o) { System.out.println("before D"); } public void after(D o) { System.out.println("after D"); } public Object getReturnValue(){return new Integer(1);} }); System.out.println("Traversal Graph for from A to D"); System.out.println(tg); System.out.println(res); } }