Hi Josh: in /course/com3362/sp99/DJ/anonym-visit I get the output: begin java.lang.RuntimeException: java.lang.IllegalAccessException: Main$1 at EDU.neu.ccs.demeter.dj.TraversalGraph.traverse(TraversalGraph.java:98) at EDU.neu.ccs.demeter.dj.TraversalGraph.traverse(TraversalGraph.java:72) at EDU.neu.ccs.demeter.dj.TraversalGraph.traverse(TraversalGraph.java:58) at Main.main(Main.java:14) Main.java is: 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); 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"); } }); System.out.println("Traversal Graph for from A to D"); System.out.println(tg); } } If I only have public void start() { System.out.println("begin");} in the inlined visitor it works perfectly. Please can you check why. -- Karl