WorkFlowManagement { traversal allSelectedProjects(ConcatenationVisitor cv) { bypassing { -> *,dueDate,*, -> *,completionDate,* } to DateSelected; } } ConcatenationVisitor { before DateSelected (@ started.addElement(host); @) } Main { (@ public static void main(String args[]) throws Exception { WorkFlowManagement result = WorkFlowManagement.parse(System.in); ConcatenationVisitor cv = new ConcatenationVisitor(new Vector()); result.allSelectedProjects(cv); Vector r = cv.get_started(); System.out.println(" Expected number of projects with a startDate: " + result.get_answer().intValue()); System.out.println(" Projects determined to have a startDate: " + r.size()); if (r.size() == result.get_answer().intValue()) { System.out.println(" SUCCESS"); } else { System.out.println(" FAILURE"); } System.exit(0); } @) }