ins.accept(this);
analyzeInstruction(ins);
	public void transferInstruction(InstructionHandle handle, BasicBlock basicBlock) {		// Record what Location we are analyzing		this.location = new Location(handle, basicBlock);		final Instruction ins = handle.getInstruction();		final ConstantPoolGen cpg = getCPG();		final ResourceValueFrame frame = getFrame();		int status = -1;		boolean created = false;		// Is a resource created, opened, or closed by this instruction?		Location creationPoint = stream.getLocation();		if (handle == creationPoint.getHandle() && basicBlock == creationPoint.getBasicBlock()) {			// Resource creation			if (stream.isOpenOnCreation()) {				status = ResourceValueFrame.OPEN;				stream.setOpenLocation(location);				resourceTracker.addStreamOpenLocation(location, stream);			} else {				status = ResourceValueFrame.CREATED;			}			created = true;		} else if (resourceTracker.isResourceOpen(basicBlock, handle, cpg, stream, frame)) {			// Resource opened			status = ResourceValueFrame.OPEN;			stream.setOpenLocation(location);			resourceTracker.addStreamOpenLocation(location, stream);		} else if (resourceTracker.isResourceClose(basicBlock, handle, cpg, stream, frame)) {			// Resource closed			status = ResourceValueFrame.CLOSED;		}		// Model use of instance values in frame slots		ins.accept(this);		// If needed, update frame status		if (status != -1) {			frame.setStatus(status);			if (created)				frame.setValue(frame.getNumSlots() - 1, ResourceValue.instance());		}	}