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 _cache_reused_expr(self, expr, expr_result):
      if expr in self._cached_expr_results:
          return self._cached_expr_results[expr].var_name
      else:
          func_name = self._cg.get_func_name()
          self._cached_expr_results[expr] = CachedResult(
              var_name=func_name, expr_result=expr_result
          )
          return func_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 FunctionalToCodeInterpreter obj's underlying member method code with example usage: obj._cache_reused_expr(expr, expr_result) and returns: self, func_name