@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;
        }
    }
@ 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.

@param obj
the context object of the currently parsed method