Cd_graph{ boolean checkMultiInheritance(ClassGraph cg){{ System.out.println("Checking for Multiple Inheritance violations. . ."); Strategy sg = new Strategy("from Cd_graph to Alternat_ns"); TraversalGraph tg = new TraversalGraph(sg, cg); return ((Boolean)tg.traverse(this, new Visitor(){ Ident currentSource; Ident currentChild; LinkedList lHasMultiParents = new LinkedList(); boolean return_val = true; HashMap hChildren = new HashMap(); void before(Adjacency adj){ currentSource = adj.get_source().get_vertex_name(); } void before(Alternat_ns alt){ Enumeration en = alt.get_alternat_ns().elements(); while(en.hasMoreElements()){ currentChild = ((Term)en.nextElement()).get_vertex(). get_vertex_name(); if(hChildren.containsKey(currentChild)){ ((LinkedList)hChildren.get(currentChild)). add(currentSource); lHasMultiParents.add(currentChild); return_val = false; } else{ LinkedList tempParentList = new LinkedList(); tempParentList.add(currentSource); hChildren.put(currentChild, tempParentList); } } } void after(Cd_graph cd){ LinkedList lParents; Ident tempChild; String output; while(lHasMultiParents.size() != 0){ tempChild = (Ident)lHasMultiParents.removeFirst(); output = "ERROR: Element " + tempChild + " inherits from: "; lParents = (LinkedList)hChildren.get(tempChild); while(lParents.size() != 0){ output += lParents.removeFirst() + ", "; } System.out.println(output); } } public Object getReturnValue(){ return new Boolean(return_val); } } )).booleanValue(); }} }