DfaBinOpValue (DfaVariableValue left, DfaValue right, DfIntegralType resultType, LongRangeBinOp op) { long hash = ((long)left.getID() << 32) | right.getID(); Key key = new Key(hash, op, resultType); return myValues.computeIfAbsent(key, k -> new DfaBinOpValue(left, right, resultType, op)); }