Save (dump) the tree in a pickle file.

        Note that this method saves the complete tree even when invoked on
        a non-root node.
        It is recommended to use the extension `.vnpkl` for this type of file.

        :param filepath: the file path for the pickle file. 
            If `filepath=None` use `self._vnpkl_fpath` attribute, if set.
        :type filepath: str or None        
        :returns: `True` if successful. 
        :rtype: bool

def savefile(self, filepath=None):
        """Save (dump) the tree in a pickle file.

        Note that this method saves the complete tree even when invoked on
        a non-root node.
        It is recommended to use the extension `.vnpkl` for this type of file.

        :param filepath: the file path for the pickle file. 
            If `filepath=None` use `self._vnpkl_fpath` attribute, if set.
        :type filepath: str or None        
        :returns: `True` if successful. 
        :rtype: bool
        """
        if filepath:
            self._vnpkl_fpath = os.path.abspath(filepath)
        # if not _pfpath:
        #     logger.error("%s.save: «%s» file path «%s» not valid." % (self.__class__.__name__, self.name, _pfpath))
        #     return False
        try:
            with open(self._vnpkl_fpath, "wb") as pf:
                pickle.dump(self._root.to_treedict(), pf) 
        except Exception as err:
            logger.error("%s.savefile: arg `filepath`=«%s» `self._vnpkl_fpath`=«%s» error: %s" % (self.__class__.__name__, filepath, self._vnpkl_fpath, err))
            return False
        return True