Main { public static void main(String args[]) throws Exception {{ Plans m = Plans.parse(System.in); ClassGraph cg1 = new ClassGraph(true, false); final ClassGraph cg = new ClassGraph(cg1, "from Plans bypassing -> *,tail,* to *"); cg.traverse(m, "from Plans to Plan", new Visitor(){ void before(Plan host) { host.process(cg); } }); m.display(); System.out.println("done"); }} } Plans { void display() to * (DisplayVisitor); } Plan { {{ void process(ClassGraph cg){ System.out.println(" UNKNOWN1 "); cg.traverse(this ,"from Plan via ->*,objects,* to Obj", new Visitor(){ void before (Obj host) {System.out.println(host.get_ident());} }); System.out.println(" UNKNOWN2 "); cg.traverse(this ,"from Plan bypassing ->*,objects,* to Obj", new Visitor(){ void before (Obj host) {System.out.println(host.get_ident());} }); System.out.println(" UNKNOWN3 "); cg.traverse(this ,"from Plan via ->*,predicates,* to PredName", new Visitor(){ void before (PredName host) {System.out.println(host.get_ident());} }); System.out.println(" UNKNOWN4 "); cg.traverse(this ,"from Plan bypassing ->*,predicates,* to PredName", new Visitor(){ void before (PredName host) {System.out.println(host.get_ident());} }); System.out.println("The number of operators defined by the plan "); List l = cg.gather(this,"from Plan via ->*,operators,* to Op"); System.out.println(l.size()); System.out.println("alternative " + this.get_operators().size()); } }} }