Hi Doug: does this example run in your updated system? It breaks as soon as inline the visitor. Please can you allow for this. public int count3(ObjectGraphSlice whereToCount){ Integer result = (Integer) whereToCount.traverse( new Visitor() { int c; public void start() { c=0; } public void before(Person o) { c++;} public Object getReturnValue() {return new Integer(c);} }); return result.intValue(); } -- Karl DJ version 0.8.1-alpha-3 = version begin before BusRoute before MyVector before MyVector after MyVector before MyVector after MyVector after MyVector before MyVector before Village before MyVector before BusStop before MyVector before Person after Person before Person after Person before Person after Person before Person after Person before Person after Person after MyVector after BusStop before BusStop before MyVector before Person after Person before Person after Person before Person after Person before Person after Person before Person after Person after MyVector after BusStop after MyVector after Village before Village before MyVector before BusStop before MyVector before Person after Person before Person after Person before Person after Person before Person after Person before Person after Person after MyVector after BusStop before BusStop before MyVector before Person after Person before Person after Person before Person after Person before Person after Person before Person after Person after MyVector after BusStop after MyVector after Village after MyVector after BusRoute end SUCCESS number of waiting persons = 20 Traversal Graph for from BusRoute through BusStop to Person Copy 0: Nodes: BusRoute MyVector java.util.Vector java.util.AbstractList java.util.AbstractCollection java.lang.Object java.io.Serializable java.util.Collection EDU.neu.ccs.demeter.dj.Collection Bus BusStop Village EDU.neu.ccs.demeter.dj.Visitor MyVisitor BusRoute$1 java.util.List java.lang.Cloneable Edges: -> BusRoute,buses,MyVector :> MyVector,java.util.Vector :> java.util.Vector,java.util.AbstractList :> java.util.AbstractList,java.util.AbstractCollection :> java.util.AbstractCollection,java.util.Collection -> java.util.Collection,elements,java.lang.Object => java.lang.Object,java.util.AbstractCollection => java.util.AbstractCollection,java.util.AbstractList => java.util.AbstractList,java.util.Vector => java.util.Vector,MyVector :> MyVector,EDU.neu.ccs.demeter.dj.Collection -> EDU.neu.ccs.demeter.dj.Collection,elements,java.lang.Object => java.lang.Object,Bus -> Bus,passengers,MyVector => java.lang.Object,BusStop -> BusStop,waiting,MyVector => java.lang.Object,Village -> Village,busStops,MyVector => java.lang.Object,EDU.neu.ccs.demeter.dj.Visitor => EDU.neu.ccs.demeter.dj.Visitor,MyVisitor -> MyVisitor,getReturnValue,java.lang.Object => java.lang.Object,BusRoute -> BusRoute,villages,MyVector :> MyVisitor,EDU.neu.ccs.demeter.dj.Visitor -> EDU.neu.ccs.demeter.dj.Visitor,getReturnValue,java.lang.Object => EDU.neu.ccs.demeter.dj.Visitor,BusRoute$1 -> BusRoute$1,getReturnValue,java.lang.Object :> BusRoute$1,EDU.neu.ccs.demeter.dj.Visitor :> java.util.Vector,java.util.List :> java.util.List,java.util.Collection :> java.util.AbstractList,java.util.List Edges to other copies: 1: => java.lang.Object,BusStop Copy 1: Nodes: BusRoute MyVector java.util.Vector java.util.AbstractList java.util.AbstractCollection java.lang.Object java.io.Serializable java.util.Collection EDU.neu.ccs.demeter.dj.Collection Bus BusStop Person Village EDU.neu.ccs.demeter.dj.Visitor MyVisitor BusRoute$1 java.util.List java.lang.Cloneable Edges: -> BusRoute,buses,MyVector :> MyVector,java.util.Vector :> java.util.Vector,java.util.AbstractList :> java.util.AbstractList,java.util.AbstractCollection :> java.util.AbstractCollection,java.util.Collection -> java.util.Collection,elements,java.lang.Object => java.lang.Object,java.util.AbstractCollection => java.util.AbstractCollection,java.util.AbstractList => java.util.AbstractList,java.util.Vector => java.util.Vector,MyVector :> MyVector,EDU.neu.ccs.demeter.dj.Collection -> EDU.neu.ccs.demeter.dj.Collection,elements,java.lang.Object => java.lang.Object,Bus -> Bus,passengers,MyVector => java.lang.Object,BusStop -> BusStop,waiting,MyVector => java.lang.Object,Person => java.lang.Object,Village -> Village,busStops,MyVector => java.lang.Object,EDU.neu.ccs.demeter.dj.Visitor => EDU.neu.ccs.demeter.dj.Visitor,MyVisitor -> MyVisitor,getReturnValue,java.lang.Object => java.lang.Object,BusRoute -> BusRoute,villages,MyVector :> MyVisitor,EDU.neu.ccs.demeter.dj.Visitor -> EDU.neu.ccs.demeter.dj.Visitor,getReturnValue,java.lang.Object => EDU.neu.ccs.demeter.dj.Visitor,BusRoute$1 -> BusRoute$1,getReturnValue,java.lang.Object :> BusRoute$1,EDU.neu.ccs.demeter.dj.Visitor :> java.util.Vector,java.util.List :> java.util.List,java.util.Collection :> java.util.AbstractList,java.util.List Edges to other copies: begin before BusRoute before MyVector before MyVector after MyVector before MyVector after MyVector after MyVector before MyVector before Village before MyVector before BusStop before MyVector before Person after Person before Person after Person before Person after Person before Person after Person before Person after Person after MyVector after BusStop before BusStop before MyVector before Person after Person before Person after Person before Person after Person before Person after Person before Person after Person after MyVector after BusStop after MyVector after Village before Village before MyVector before BusStop before MyVector before Person after Person before Person after Person before Person after Person before Person after Person before Person after Person after MyVector after BusStop before BusStop before MyVector before Person after Person before Person after Person before Person after Person before Person after Person before Person after Person after MyVector after BusStop after MyVector after Village after MyVector after BusRoute end number of waiting persons = 20 Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalAccessException at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$VisitorTraverser.invokeVisitorMethod(ObjectGraphSlice.java:251) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$VisitorTraverser.before(ObjectGraphSlice.java:237) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:133) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:197) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseCollection(ObjectGraphSlice.java:216) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:188) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:199) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:199) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:199) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:199) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:191) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:197) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseCollection(ObjectGraphSlice.java:216) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:188) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:199) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:199) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:199) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:199) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:191) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:197) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseCollection(ObjectGraphSlice.java:216) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:188) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:199) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:199) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:199) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:199) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdge(ObjectGraphSlice.java:191) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseEdges(ObjectGraphSlice.java:172) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverseNode(ObjectGraphSlice.java:146) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice$Traverser.traverse(ObjectGraphSlice.java:115) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice.traverse(ObjectGraphSlice.java:70) at EDU.neu.ccs.demeter.dj.ObjectGraphSlice.traverse(ObjectGraphSlice.java:63) at BusRoute.count3(BusRoute.java:22) at Main.main(Main.java:57)