@Nullable
    @Override
    public String generate(@NotNull ChainVariable inVar,
                           @NotNull ChainVariable outVar,
                           @NotNull String code,
                           @NotNull OptionalToIfContext context) {
      myFn.transform(context);
      if (!SideEffectChecker.mayHaveSideEffects(myFn.getExpression())) {
        context.setInitializer(myFn.getText());
        return context.createResult(inVar.getName());
      }
      context.addBeforeStep(outVar.getDeclaration("null"));
      context.addAfterStep("if(" + outVar.getName() + "==null){\n" +
                           outVar.getName() + "=" + myFn.getStatementText() +
                           "\n}" +
                           context.createResult(outVar.getName()));
      return outVar.getName() + "=" + inVar.getName() + ";";
    }
@Nullable
    @Override
    public String generate(@NotNull ChainVariable inVar,
                           @NotNull ChainVariable outVar,
                           @NotNull String code,
                           @NotNull OptionalToIfContext context)