PsiType (PsiPrimitiveType type1, PsiType type2) { if (TypeConversionUtil.isNumericType(type1)) { // JLS 15.21.1. Numerical Equality Operators == and != return TypeConversionUtil.isNumericType(type2) ? TypeConversionUtil.binaryNumericPromotion(type1, type2) : null; } else if (PsiTypes.booleanType().equals(type1)) { // JLS 15.21.2. Boolean Equality Operators == and != return TypeConversionUtil.isBooleanType(type2) ? PsiTypes.booleanType() : null; } else if (PsiTypes.nullType().equals(type1)) { return TypeUtils.getObjectType(wrappedExpression); } // void return null; }