stackOffset = currentBlock.getStackOffset();
	public void startInstruction(int address) {		this.address = address;		if (address >= currentBlock.getEndPC()) {			currentBlock.resolvePhiReferences();			currentBlock = (IRBasicBlock) basicBlockIterator.next();			Iterator pi = currentBlock.getPredecessors().iterator();			if (!pi.hasNext()) {				// this must be the first block in the method				return;			}			while (pi.hasNext()) {				IRBasicBlock irb = (IRBasicBlock) pi.next();				if (irb.getEndPC() <= address) {					Variable[] prevVars = irb.getVariables();					int n = prevVars.length;					variables = new Variable[n];					for (int i=0; i<n; i+=1) {						variables[i] = prevVars[i];					}					currentBlock.setVariables(variables);					return;				}			}			throw new AssertionError("can't find a preceding basic block");		}		if (address < currentBlock.getStartPC() || address >= currentBlock.getEndPC()) {			throw new AssertionError("instruction not in basic block!");		}	}