core: import edu.neu.ccs.demeter.dj.*; import java.util.*; import edu.neu.ccs.demeter.*; add: class CheckUPartVisitor extends Visitor { public constructor CheckUPartVisitor() {{ super(); }} public static CheckUPartVisitor parse(java.io.Reader in) throws ParseException {{ return new Parser(in)._CheckUPartVisitor(); }} public static CheckUPartVisitor parse(java.io.InputStream in) throws ParseException {{ return new Parser(in)._CheckUPartVisitor(); }} public static CheckUPartVisitor parse(String s) {{ try { return parse(new java.io.StringReader(s)); } catch (ParseException e) { throw new RuntimeException(e.toString()); } }} {{ void before(ClassInfo host){ PartInfo_List list = host.get_partclass(); if(list != null){ PartInfo source; java.util.Enumeration enn,en; en = list.elements(); Vector v = new Vector(); int len = list.size();int i=0,j; while (en.hasMoreElements()){ source = (PartInfo)en.nextElement(); v.addElement(source.get_partname().get_ident().toString()); if(len>1){ FindUCVisitor fV = new FindUCVisitor(source.get_classname().get_name().get_ident()); ClassInfo result = (ClassInfo) Cd_graph.tg_list.traverse(Cd_graph.terminal,fV); //TBR. checking if (result != null){ System.out.println("Warning: Class " + host.get_name().get_ident() +" violates TBR. Class "+ source.get_classname().get_name().get_ident() +" is not the only part class"); Main.war_num++; } } } //Unique checking String source_partname,dest_partname; while(i