graph = new ProgramGraph(
className, methodNode.name, methodNode.desc, nodes.get(0));
if ((type & BASIC_BLOCK) != 0) {
new PreOrderTraversalStrategy(new BasicBlockGraphNodeJoiner()).traverse(graph.getRootNode());
}
if ((type & COMPUTE_DEF_USE) != 0) {
new DataflowVerifierTraversalStrategy(new DefUseFrameComputer()).traverse(graph.getRootNode());
}
if ((type & REMOVE_LOCAL_USES) != 0) {
new PreOrderTraversalStrategy(new LocalUseRemover()).traverse(graph.getRootNode());
}
if ((type & REMOVE_UNUSED_DEFS) != 0) {
new PreOrderTraversalStrategy(new LonelyDefinitionsRemover()).traverse(graph.getRootNode());
}
}
// Releasing references in order to save memory