attemptMatch(basicBlock, i);
attemptMatch(basicBlock, i.duplicate());
	public PatternMatcher execute() throws DataflowAnalysisException {		workList.addLast(cfg.getEntry());		while (!workList.isEmpty()) {			BasicBlock basicBlock = workList.removeLast();			visitedBlockMap.put(basicBlock, basicBlock);			// Scan instructions of basic block for possible matches			BasicBlock.InstructionIterator i = basicBlock.instructionIterator();			while (i.hasNext()) {				attemptMatch(basicBlock, i);				i.next();			}			// Add successors of the basic block (which haven't been visited already)			Iterator<BasicBlock> succIterator = cfg.successorIterator(basicBlock);			while (succIterator.hasNext()) {				BasicBlock succ = succIterator.next();				if (visitedBlockMap.get(succ) == null)					workList.addLast(succ);			}		}		return this;	}