String (GrExpression exp) { if (ComparisonUtils.isComparison(exp)) { final GrBinaryExpression binaryExpression = (GrBinaryExpression)exp; final IElementType sign = binaryExpression.getOperationTokenType(); final String negatedComparison = ComparisonUtils.getNegatedComparison(sign); final GrExpression lhs = binaryExpression.getLeftOperand(); final GrExpression rhs = binaryExpression.getRightOperand(); if (rhs == null) { return lhs.getText() + negatedComparison; } return lhs.getText() + negatedComparison + rhs.getText(); } else { final String baseText = exp.getText(); if (ParenthesesUtils.getPrecedence(exp) > ParenthesesUtils.PREFIX_PRECEDENCE) { return "!(" + baseText + ')'; } else { return '!' + baseText; } } }