if (seen == IREM && lhs.specialKind == Item.HASHCODE_INT) newValue.specialKind = Item.HASHCODE_INT_REMAINDER; if (seen == IREM && lhs.specialKind == Item.RANDOM_INT) newValue.specialKind = Item.RANDOM_INT_REMAINDER;
 	private void pushByIntMath(int seen, Item lhs, Item rhs) {		 if (DEBUG) System.out.println("pushByIntMath: " + rhs.getConstant()  + " " + lhs.getConstant() ); 		Item newValue  = new Item("I"); 		try { 			if ((rhs.getConstant() != null) && lhs.getConstant() != null) {			Integer lhsValue = (Integer) lhs.getConstant();			Integer rhsValue = (Integer) rhs.getConstant();			if (seen == IADD)				newValue = new Item("I",lhsValue + rhsValue);			else if (seen == ISUB)				newValue = new Item("I",lhsValue - rhsValue);			else if (seen == IMUL)				newValue = new Item("I", lhsValue * rhsValue);			else if (seen == IDIV)				newValue = new Item("I", lhsValue / rhsValue);			else if (seen == IAND) {				newValue = new Item("I", lhsValue & rhsValue);				if ((rhsValue&0xff) == 0 && rhsValue != 0 || (lhsValue&0xff) == 0 && lhsValue != 0 ) 						newValue.specialKind = Item.LOW_8_BITS_CLEAR;						} else if (seen == IOR)				newValue = new Item("I",lhsValue | rhsValue);			else if (seen == IXOR)				newValue = new Item("I",lhsValue ^ rhsValue);			else if (seen == ISHL) {				newValue = new Item("I",lhsValue << rhsValue);				if (rhsValue >= 8) 	newValue.specialKind = Item.LOW_8_BITS_CLEAR;			}			else if (seen == ISHR)				newValue = new Item("I",lhsValue >> rhsValue);			else if (seen == IREM)				newValue = new Item("I", lhsValue % rhsValue);			else if (seen == IUSHR)				newValue = new Item("I", lhsValue >>> rhsValue);		} else if (rhs.getConstant() != null && seen == ISHL  && (Integer) rhs.getConstant() >= 8)			newValue.specialKind = Item.LOW_8_BITS_CLEAR; 		else if (lhs.getConstant() != null && seen == IAND  && ((Integer) lhs.getConstant() & 0xff) == 0)			newValue.specialKind = Item.LOW_8_BITS_CLEAR; 		else if (rhs.getConstant() != null && seen == IAND  && ((Integer) rhs.getConstant() & 0xff) == 0)			newValue.specialKind = Item.LOW_8_BITS_CLEAR;		} catch (RuntimeException e) { 			// ignore it 		}		if (lhs.specialKind == Item.INTEGER_SUM && rhs.getConstant() != null ) {			int rhsValue = (Integer) rhs.getConstant();			if (seen == IDIV && rhsValue ==2  || seen == ISHR  && rhsValue == 1)				newValue.specialKind = Item.AVERAGE_COMPUTED_USING_DIVISION;		}		if (seen == IADD && newValue.specialKind == 0 &&   lhs.getConstant() == null && rhs.getConstant() == null ) 			newValue.specialKind = Item.INTEGER_SUM; 		if (DEBUG) System.out.println("push: " + newValue); 		push(newValue);	}