code: def set_refobj(self, refobj, setParent=True):
          
          root = self.get_root()
          old = self._refobj
          self._refobj = refobj
          refobjinter = self.get_refobjinter()
          if self._refobj:
              self.set_typ(refobjinter.get_typ(self._refobj))
              self.set_taskfileinfo(refobjinter.get_taskfileinfo(self._refobj))
              self.set_element(refobjinter.get_element(self._refobj))
              if setParent:
                  parentrefobj = refobjinter.get_parent(self._refobj)
                  parentreftrack = root.get_reftrack(parentrefobj)
                  self.set_parent(parentreftrack)
              self.set_status(refobjinter.get_status(self._refobj))
          else:
              self.set_taskfileinfo(None)
              if setParent:
                  self.set_parent(None)
              self.set_status(None)
          root.update_refobj(old, refobj, self)
          self.fetch_uptodate()
docs: Set the reftrack object.
  
          The reftrack object interface will determine typ, element, taskfileinfo, status and parent and set these values.
          If the reftrack object is None, the :class:`Reftrack` object will keep the initial typ,
          element but will loose it\'s parent, status and taskfileinfo
  
          :param refobj: a reftrack object or None
          :type refobj: None | reftrack object
          :param setParent: If True, set also the parent
          :type setParent: :class:`bool`
          :returns: None
          :rtype: None
          :raises: None