visitor.setFrame(fact);
visitor.setFrameAndLocation(fact, new Location(handle, basicBlock));
	public void transferInstruction(InstructionHandle handle, BasicBlock basicBlock, IsNullValueFrame fact)	        throws DataflowAnalysisException {		// If this is the last instruction in the block,		// save the result immediately before the instruction.		if (handle == basicBlock.getLastInstruction()) {			lastFrame = createFact();			lastFrame.copyFrom(fact);		}		// Model the instruction		visitor.setFrame(fact);		Instruction ins = handle.getInstruction();		visitor.analyzeInstruction(ins);		// Special case:		// The instruction may have produced previously seen values		// about which new is-null information is known.		// If any other instances of the produced values exist,		// update their is-null information.		int numProduced = ins.produceStack(methodGen.getConstantPool());		if (numProduced == Constants.UNPREDICTABLE)			throw new DataflowAnalysisException("Unpredictable stack production", methodGen, handle);		int start = fact.getNumSlots() - numProduced;		ValueNumberFrame vnaFrameAfter = vnaDataflow.getFactAfterLocation(new Location(handle, basicBlock));		for (int i = start; i < fact.getNumSlots(); ++i) {			ValueNumber value = vnaFrameAfter.getValue(i);			IsNullValue isNullValue = fact.getValue(i);			for (int j = 0; j < start; ++j) {				ValueNumber otherValue = vnaFrameAfter.getValue(j);				if (value.equals(otherValue)) {					// Same value is in both slots.					// Update the is-null information to match					// the new information.					fact.setValue(j, isNullValue);				}			}		}	}