class_docstr: This mixin provides ability to split the code into subroutines based on
  the size of the AST.
  
  Subclasses only need to implement `create_code_generator` method.
  
  Their code generators should implement 3 methods:
       - function_definition;
       - function_invocation;
       - add_return_statement.
  
  Interpreter should prepare at least one subroutine using method
  `enqueue_subroutine` and then call method `process_subroutine_queue` with
  instance of code generator, which will be populated with the result code.
code: def create_code_generator(self):
      raise NotImplementedError
  
imports: import math
  import sys
  from collections import namedtuple
  from m2cgen import ast
  from m2cgen.interpreters.interpreter import BaseToCodeInterpreter
label_desc: Use image node_id 8 for calling the SubroutinesMixin obj's underlying member method code with example usage: obj.create_code_generator() without return types