class_docstr: This interpreter provides default implementation for the methods
  interpreting AST expression into code.
  
  It can be used for the most 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 _cache_reused_expr(self, expr, expr_result):
      var_name = self._cg.add_var_declaration(expr.output_size)
      self._cg.add_var_assignment(
          var_name, expr_result, expr.output_size
      )
      self._cached_expr_results[expr] = CachedResult(
          var_name=var_name, expr_result=None
      )
      return var_name
  
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 2 for calling the ImperativeToCodeInterpreter obj's underlying member method code with example usage: obj._cache_reused_expr(expr, expr_result) and returns: var_name