PsiType () { PsiExpression operand = getOperand(); if (operand == null) return null; PsiType type = operand.getType(); IElementType opCode = getOperationTokenType(); if (opCode == JavaTokenType.PLUS || opCode == JavaTokenType.MINUS || opCode == JavaTokenType.TILDE) { if (type == null) return null; if (type instanceof PsiClassType) type = PsiPrimitiveType.getUnboxedType(type); return PsiTypes.byteType().equals(type) || PsiTypes.charType().equals(type) || PsiTypes.shortType().equals(type) ? PsiTypes.intType() : type; } else if (opCode == JavaTokenType.PLUSPLUS || opCode == JavaTokenType.MINUSMINUS) { return type; } else if (opCode == JavaTokenType.EXCL) { return PsiTypes.booleanType(); } else { LOG.assertTrue(false); return null; } }