if (xfield != null && (xfield.getAccessFlags() & Constants.ACC_VOLATILE) == 0) { InstructionHandle start = match.getLabeledInstruction("start"); InstructionHandle end   = match.getLabeledInstruction("end");
int priority = LOW_PRIORITY; boolean isDefaultAccess = (method.getAccessFlags() & (Constants.ACC_PUBLIC|Constants.ACC_PRIVATE|Constants.ACC_PROTECTED)) == 0; if (method.isPublic()) priority = HIGH_PRIORITY; else if (method.isProtected() || isDefaultAccess) priority = NORMAL_PRIORITY;
	public void reportMatch(ClassContext classContext, Method method, ByteCodePatternMatch match)		throws CFGBuilderException, DataflowAnalysisException {		JavaClass javaClass = classContext.getJavaClass();		MethodGen methodGen = classContext.getMethodGen(method);		try {			// Get the variable referenced in the pattern instance.			BindingSet bindingSet = match.getBindingSet();			Binding binding = bindingSet.lookup("f");			// Examine the lock sets for all matched instructions.			// If the intersection is nonempty, then there was at			// least one lock held for the entire sequence.			LockDataflow lockDataflow = classContext.getLockDataflow(method);			LockSet lockSet = null;			for (Iterator<PatternElementMatch> i = match.patternElementMatchIterator(); i.hasNext(); ) {				PatternElementMatch element = i.next();				Location location = new Location(element.getMatchedInstructionInstructionHandle(), element.getBasicBlock());				LockSet insLockSet = lockDataflow.getFactAtLocation(location);				if (lockSet == null) {					lockSet = new LockSet();					lockSet.copyFrom(insLockSet);				} else					lockSet.intersectWith(insLockSet);			}			if (!lockSet.isEmpty())				return;			// Look up the field as an XField.			// If it is volatile, then the instance is not a bug.			FieldVariable field = (FieldVariable) binding.getVariable();			XField xfield =				Hierarchy.findXField(field.getClassName(), field.getFieldName(), field.getFieldSig());			if (xfield == null)				return;			if (xfield != null && (xfield.getAccessFlags() & Constants.ACC_VOLATILE) == 0) {				InstructionHandle start = match.getLabeledInstruction("start");				InstructionHandle end   = match.getLabeledInstruction("end");				String sourceFile = javaClass.getSourceFileName();				bugReporter.reportBug(new BugInstance("LI_LAZY_INIT", NORMAL_PRIORITY)					.addClassAndMethod(methodGen, sourceFile)					.addField(xfield).describe("FIELD_ON")					.addSourceLine(methodGen, sourceFile, start, end));			}		} catch (ClassNotFoundException e) {			bugReporter.reportMissingClass(e);			return;		}	}