boolean (GrExpression expression) { if (isString(expression)) { return true; } if (expression instanceof GrBinaryExpression binaryExpression) { final GrExpression lhs = binaryExpression.getLeftOperand(); if (containsStringConcatenation(lhs)) { return true; } final GrExpression rhs = binaryExpression.getRightOperand(); return containsStringConcatenation(rhs); } else if (expression instanceof GrUnaryExpression unaryExpression) { final GrExpression operand = unaryExpression.getOperand(); return containsStringConcatenation(operand); } else if (expression instanceof GrParenthesizedExpression parenthesizedExpression) { final GrExpression contents = parenthesizedExpression.getOperand(); return containsStringConcatenation(contents); } return false; }