ValueNumberFrame before = vnaDataflow.getFactAtLocation(location); ValueNumberFrame after = vnaDataflow.getFactAfterLocation(location);   boolean debug = DEBUG && (!(patternElement instanceof Wild) || SHOW_WILD); if (debug) System.out.println("Match " + patternElement + " against " + location.getHandle() + " " + (bindingSet != null ? bindingSet.toString() : "[]") + "..."); MatchResult matchResult = patternElement.match(location.getHandle(), cpg, before, after, bindingSet); if (debug) System.out.println("\t" + ((matchResult != null) ? " ==> MATCH" : " ==> NOT A MATCH")); if (matchResult != null) {   ++matchCount; canFork = true; currentMatch = new PatternElementMatch(matchResult.getPatternElement(), location.getHandle(), basicBlock, matchCount, currentMatch); bindingSet = matchResult.getBindingSet(); } return matchResult;
return matchLocation(location);
		public MatchResult matchNextInBasicBlock() throws DataflowAnalysisException {			if (!moreInstructionsInBasicBlock()) throw new IllegalStateException("At end of BB!");			// Move to location of next instruction to be matched			Location location = new Location(instructionIterator.next(), basicBlock);			// Get the ValueNumberFrames before and after the instruction			ValueNumberFrame before = vnaDataflow.getFactAtLocation(location);			ValueNumberFrame after = vnaDataflow.getFactAfterLocation(location);			// Try to match the instruction against the pattern element.			boolean debug = DEBUG && (!(patternElement instanceof Wild) || SHOW_WILD);			if (debug) System.out.println("Match " + patternElement +				" against " + location.getHandle() + " " +				(bindingSet != null ? bindingSet.toString() : "[]") + "...");			MatchResult matchResult = patternElement.match(location.getHandle(),				cpg, before, after, bindingSet);			if (debug) System.out.println("\t" +				((matchResult != null) ? " ==> MATCH" : " ==> NOT A MATCH"));			if (matchResult != null) {				// Successful match!				// Update state to reflect that the match has occurred.				++matchCount;				canFork = true;				currentMatch = new PatternElementMatch(matchResult.getPatternElement(),					location.getHandle(), basicBlock, matchCount, currentMatch);				bindingSet = matchResult.getBindingSet();			}			return matchResult;		}