void (StringBuilder builder, ExpressionContext context) { final GrExpression condition = ifStatement.getCondition(); final GrStatement thenBranch = ifStatement.getThenBranch(); final GrStatement elseBranch = ifStatement.getElseBranch(); builder.append("if ("); if (condition != null) { final PsiType type = condition.getType(); if (PsiTypes.booleanType().equals(TypesUtil.unboxPrimitiveTypeWrapper(type))) { writeExpression(condition, builder, context); } else { GenerationUtil.invokeMethodByName( condition, "asBoolean", GrExpression.EMPTY_ARRAY, GrNamedArgument.EMPTY_ARRAY, GrClosableBlock.EMPTY_ARRAY, new ExpressionGenerator(builder, context), ifStatement); } } builder.append(')'); if (thenBranch != null) thenBranch.accept(new CodeBlockGenerator(builder, context.extend(), myExitPoints)); if (ifStatement.getElseKeyword() != null) builder.append(" else "); if (elseBranch != null) elseBranch.accept(new CodeBlockGenerator(builder, context.extend(), myExitPoints)); }