@ Override public void visitMethod ( Method obj ) { if ( localizableFields . isEmpty ( ) ) { return ; } try { cfg = clsContext . getCFG ( obj ) ; cpg = cfg . getMethodGen ( ) . getConstantPool ( ) ; BasicBlock bb = cfg . getEntry ( ) ; Set < String > uncheckedFields = new HashSet <> ( localizableFields . keySet ( ) ) ; visitedBlocks . clear ( ) ; checkBlock ( bb , uncheckedFields ) ; } catch ( CFGBuilderException cbe ) { localizableFields . clear ( ) ; } finally { cfg = null ; cpg = null ; } }
overrides the visitor to navigate basic blocks looking for all first usages of fields removing those that are read from first .