code: def set_notifier_path(self, notifier, path):
          
          # type: (Union[Notifier, DummyNotifier], List[str]) -> None
          # This function should either change from the DummyNotifier or to
          # the DummyNotifier, never between two valid notifiers
          assert self.notifier is Model.notifier or notifier is Model.notifier, \
              "Already have a notifier %s path %s" % (self.notifier, self.path)
          self.notifier = notifier
          self.path = path
          # Tell all our children too
          for name, ct in self.call_types.items():
              if ct.is_mapping:
                  child = getattr(self, name)
                  if child and issubclass(ct.typ[1], Model):
                      for k, v in child.items():
                          v.set_notifier_path(notifier, self.path + [name, k])
              elif issubclass(ct.typ, Model):
                  assert not ct.is_array, \
                      "Can't deal with Arrays of Models %s" % ct
                  child = getattr(self, name)
                  child.set_notifier_path(notifier, self.path + [name])
docs: Sets the notifier, and the path from the path from block root
  
          Args:
              notifier (Notifier): The Notifier to tell when endpoint data changes
              path (list): The absolute path to get to this object