private WhenTranslator( @NotNull KtWhenExpression expression, @NotNull TranslationContext context) { super(context); whenExpression = expression; KtExpression subject = expression.getSubjectExpression(); if (subject != null) { JsExpression subjectExpression = Translation.translateAsExpression(subject, context); if (TranslationUtils.isCacheNeeded(subjectExpression)) { TemporaryVariable subjectVar = context.declareTemporary(null); context.addStatementToCurrentBlock( JsAstUtils.assignment(subjectVar.reference(), subjectExpression).makeStmt()); subjectExpression = subjectVar.reference(); } expressionToMatch = subjectExpression; } else { expressionToMatch = null; } }