int (PsiExpression expression) { if (expression instanceof PsiThisExpression || expression instanceof PsiLiteralExpression || expression instanceof PsiSuperExpression || expression instanceof PsiClassObjectAccessExpression || expression instanceof PsiArrayAccessExpression || expression instanceof PsiArrayInitializerExpression) { return LITERAL_PRECEDENCE; } if (expression instanceof PsiReferenceExpression) { final PsiReferenceExpression referenceExpression = (PsiReferenceExpression)expression; if (referenceExpression.getQualifier() != null) { return METHOD_CALL_PRECEDENCE; } else { return LITERAL_PRECEDENCE; } } if (expression instanceof PsiMethodCallExpression || expression instanceof PsiNewExpression) { return METHOD_CALL_PRECEDENCE; } if (expression instanceof PsiTypeCastExpression) { return TYPE_CAST_PRECEDENCE; } if (expression instanceof PsiPrefixExpression) { return PREFIX_PRECEDENCE; } if (expression instanceof PsiPostfixExpression || expression instanceof PsiSwitchExpression) { return POSTFIX_PRECEDENCE; } if (expression instanceof PsiPolyadicExpression) { final PsiPolyadicExpression polyadicExpression = (PsiPolyadicExpression)expression; return getPrecedenceForOperator(polyadicExpression.getOperationTokenType()); } if (expression instanceof PsiInstanceOfExpression) { return RELATIONAL_PRECEDENCE; } if (expression instanceof PsiConditionalExpression) { return CONDITIONAL_PRECEDENCE; } if (expression instanceof PsiAssignmentExpression) { return ASSIGNMENT_PRECEDENCE; } if (expression instanceof PsiParenthesizedExpression) { return PARENTHESIZED_PRECEDENCE; } if (expression instanceof PsiLambdaExpression) { return LAMBDA_PRECEDENCE; } return -1; }