'Sets the loader on this object and recursively on parent, child objects.
This is used primarily after the Task has been serialized/deserialized, which
does not preserve the loader.'

def set_loader(self, loader):

    self._loader = loader
    if self._parent:
        self._parent.set_loader(loader)
