code: def initialize(self, initialization_order=None):
          
  
          # Initialize time
          if self.time is None:
              if self.time_initialization is None:
                  self.time = Time()
              else:
                  self.time = self.time_initialization()
  
          # if self.time is None:
          #     self.time = time
          # self.components.time = self.time
          # self.components.functions.time = self.time  # rewrite functions so we don't need this
          self.components._init_outer_references({
              'scope': self,
              'time': self.time
          })
  
          remaining = set(self._stateful_elements)
  
          while remaining:
              progress = set()
              for element in remaining:
                  try:
                      element.initialize()
                      progress.add(element)
                  except (KeyError, TypeError, AttributeError):
                      pass
  
              if progress:
                  remaining.difference_update(progress)
              else:
                  raise KeyError('Unresolvable Reference: Probable circular initialization' +
                                 '\n'.join([repr(e) for e in remaining]))
docs: This function tries to initialize the stateful objects.
  
          In the case where an initialization function for `Stock A` depends on
          the value of `Stock B`, if we try to initialize `Stock A` before `Stock B`
          then we will get an error, as the value will not yet exist.
  
          In this case, just skip initializing `Stock A` for now, and
          go on to the other state initializations. Then come back to it and try again.