else if (opcode == Constants.IF_ACMPEQ || opcode == Constants.IF_ACMPNE) { Location atIf = new Location(lastInSourceHandle, edge.getSource()); IsNullValueFrame frame = getFactAtLocation(atIf);  int numSlots = frame.getNumSlots(); IsNullValue tos = frame.getValue(numSlots - 1); IsNullValue nextToTos = frame.getValue(numSlots - 2);     boolean tosNull = tos.isDefinitelyNull(); boolean nextToTosNull = nextToTos.isDefinitelyNull();  if (tosNull || nextToTosNull) { int[] info = new int[]{ tosNull ? NEXT_TO_TOS_NULL : TOS_NULL, tosNull ? NEXT_TO_TOS_NON_NULL : TOS_NON_NULL };  if (edgeType == IFCMP_EDGE) return info[opcode == Constants.IF_ACMPEQ ? 0 : 1]; else return info[opcode == Constants.IF_ACMPEQ ? 1 : 0]; } }
	private int getNullInfoFromEdge(Edge edge) {		final InstructionHandle lastInSourceHandle = edge.getSource().getLastInstruction();		final int edgeType = edge.getType();		if (lastInSourceHandle != null) {			Instruction lastInSource = lastInSourceHandle.getInstruction();			short opcode = lastInSource.getOpcode();			if (opcode == Constants.IFNULL)				return edgeType == IFCMP_EDGE ? TOS_NULL : TOS_NON_NULL;			else if (opcode == Constants.IFNONNULL)				return edgeType == IFCMP_EDGE ? TOS_NON_NULL : TOS_NULL;		} else if (edge.getSource().isNullCheck() && edge.getType() == FALL_THROUGH_EDGE) {			return REF_OPERAND_NON_NULL;		}		return NO_INFO;	}