//checks for unique parts. Cd_graph{ void checkUnique(ClassGraph _cg){{ flatten(_cg); final ClassGraph cg = _cg; System.out.println("Checking for Unique Parts violations. . ."); Strategy getAllParts = new Strategy("from Cd_graph to Adjacency"); TraversalGraph tg = new TraversalGraph(getAllParts, cg); tg.traverse(this, new Visitor(){ void before(Adjacency a){ a.checkDuplicateParts(cg); } }); }} } Adjacency{ void checkDuplicateParts(ClassGraph cg){{ Strategy checkAllParts = new Strategy("from Adjacency to Labeled"); TraversalGraph tg = new TraversalGraph(checkAllParts, cg); tg.traverse(this, new Visitor(){ Ident currentSource = get_source().get_vertex_name(); HashSet hParts = new HashSet(); void before(Labeled l){ if(!hParts.add(l.get_label_name())){ System.out.println("ERROR: Element "+ l.get_label_name() + " within class "+ currentSource + " is not unique."); } } }); }} }