<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def set_refobj(self, refobj, setParent=True):
 """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 """

        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()