code: def savefile(self, filepath=None):
          
          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
docs: 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