class_docstr: Subclass of Function that allows multiple functions and variables to
  be defined in a single code string. The code must contain a main() function
  definition.
class_docstr_tok: ["Subclass","of","Function","that","allows","multiple","functions","and","variables","to","be","defined","in","a","single","code","string",".","The","code","must","contain","a","main","(",")","function","definition","."]
code: def static_names(self):
      if self._static_vars is not None:
          return self._static_vars
  
      # parse static variables
      names = Function.static_names(self)
  
      # parse all function names + argument names
      funcs = parsing.find_functions(self.code)
      for f in funcs:
          if f[0] == "main":
              continue
          names.append(f[0])
          for arg in f[1]:
              names.append(arg[1])
  
      self._static_vars = names
      return names
  
imports: from collections import OrderedDict
  import logging
  import re
  import numpy
  from ...util.eq import eq
  from ...util import logger
  from .None import parsing
  from .shader_object import ShaderObject
  from .variable import Variable, Varying
  from .expression import TextExpression, FunctionCall
label_desc: Use image node_id 5 for calling the MainFunction obj's underlying member method code with example usage: obj.static_names() and returns: names, self