Set<Type> dfs_types = RootbeerClassLoader.v().getDfsInfo().getDfsTypes();
Set<String> dfs_string_types = getRefTypes(dfs_types);
ClassHierarchy class_hierarchy = RootbeerClassLoader.v().getClassHierarchy();
SootClass obj_class = Scene.v().getSootClass("java.lang.Object");
HierarchyGraph hgraph = class_hierarchy.getHierarchyGraph();
Set<Integer> roots = hgraph.getChildren(0); //java.lang.Object is 0
for(Integer root : roots){
String root_name = StringNumbers.v().getString(root);
SootClass root_class = Scene.v().getSootClass(root_name);
if(root_class.isInterface()){
continue;
}
OpenCLClass ocl_class = OpenCLScene.v().getOpenCLClass(root_class);
TreeNode tree_node = new TreeNode(root_class, ocl_class);
LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(tree_node);
all_tree_nodes.add(tree_node);
while(queue.isEmpty() == false){
TreeNode curr = queue.removeFirst();
SootClass soot_class = curr.getSootClass();
int num = StringNumbers.v().addString(soot_class.getName());
Set<Integer> children = hgraph.getChildren(num);
for(Integer child : children){
String child_str = StringNumbers.v().getString(child);
SootClass child_class = Scene.v().getSootClass(child_str);
if(child_class.isInterface()){
continue;