SourceLineAnnotation sourceLine = SourceLineAnnotation.fromVisitedInstruction(classContext, methodGen, sourceFile, location.getHandle()); int line = sourceLine.getStartLine(); BitSet occursMultipleTimes = classContext.linesMentionedMultipleTimes(methodGen.getMethod()); if (line > 0 && occursMultipleTimes.get(line)) return;
    private void checkForSelfOperation(ClassContext classContext, Location location, ValueNumberDataflow valueNumberDataflow, String op, MethodGen methodGen, String sourceFile) throws DataflowAnalysisException {        ValueNumberFrame frame = valueNumberDataflow.getFactAtLocation(location);        if (!frame.isValid())  return;        Instruction ins = location.getHandle().getInstruction();        int opcode = ins.getOpcode();        int offset = 1;        if (opcode == LCMP || opcode == LXOR || opcode == LAND || opcode == LOR || opcode == LSUB)            offset = 2;        ValueNumber v0 = frame.getStackValue(0);        ValueNumber v1 = frame.getStackValue(offset);        if (!v1.equals(v0)) return;        int priority = HIGH_PRIORITY;        if (opcode == ISUB || opcode == LSUB || opcode == INVOKEINTERFACE || opcode == INVOKEVIRTUAL)            priority = NORMAL_PRIORITY;        XField field = FindNullDeref.findXFieldFromValueNumber(methodGen.getMethod(), location, v0, frame);        BugAnnotation annotation;        String prefix;        if (field != null) {            if (field.isVolatile()) return;            annotation = FieldAnnotation.fromXField(field);            prefix = "SA_FIELD_SELF_";            if (true) return; // don't report these; too many false positives        } else {            annotation  = FindNullDeref.findLocalAnnotationFromValueNumber(methodGen.getMethod(), location, v0, frame);            prefix = "SA_LOCAL_SELF_" ;        }        if (annotation == null) return;        BugInstance bug = new BugInstance(this, prefix + op, priority).addClassAndMethod(methodGen, sourceFile)        .add(annotation).addSourceLine(classContext, methodGen, sourceFile, location.getHandle());        bugReporter.reportBug(bug);    }