class_docstr: This interpreter provides default implementation for the methods
  interpreting AST expression into code.
  
  It can be used for the most functional programming languages and requires
  only language-specific instance of the CodeGenerator.
  
  !!IMPORTANT!!: Code generators used by this interpreter must know nothing
  about AST.
code: def interpret_if_expr(self, expr, if_code_gen=None, **kwargs):
      if if_code_gen is None:
          code_gen = self.create_code_generator()
          nested = False
      else:
          code_gen = if_code_gen
          nested = True
  
      code_gen.add_if_statement(self._do_interpret(expr.test, **kwargs))
      code_gen.add_code_line(
          self._do_interpret(expr.body, if_code_gen=code_gen, **kwargs)
      )
      code_gen.add_else_statement()
      code_gen.add_code_line(
          self._do_interpret(
              expr.orelse, if_code_gen=code_gen, **kwargs
          )
      )
      code_gen.add_if_termination()
  
      if not nested:
          return self._cache_reused_expr(
              expr, code_gen.finalize_and_get_generated_code()
          )
  
imports: from m2cgen.assemblers import fallback_expressions
  from m2cgen.ast import BinNumExpr, CompExpr, IfExpr
  from m2cgen.interpreters.utils import CachedResult, _get_handler_name
label_desc: Use image node_id 1 for calling the FunctionalToCodeInterpreter obj's underlying member method code with example usage: obj.interpret_if_expr(expr, if_code_gen) and returns: self