Compare the (sub-)tree rooted at `self` with another tree.

        `tree_compare` converts the trees being compared into JSON string
        representations, and uses `difflib.SequenceMatcher().ratio()` to
        calculate a measure of the similarity of the strings.

        :param othertree: the other tree for comparison.
        :type othertree: Node
        :param vntree_meta: include private vntree metadata in comparison.
        :type vntree_meta: bool
        :returns: similarity of the trees as a number between 0 and 1. 
        :rtype: float

def tree_compare(self, othertree, vntree_meta=False):
        """Compare the (sub-)tree rooted at `self` with another tree.

        `tree_compare` converts the trees being compared into JSON string
        representations, and uses `difflib.SequenceMatcher().ratio()` to
        calculate a measure of the similarity of the strings.

        :param othertree: the other tree for comparison.
        :type othertree: Node
        :param vntree_meta: include private vntree metadata in comparison.
        :type vntree_meta: bool
        :returns: similarity of the trees as a number between 0 and 1. 
        :rtype: float 
        """
        return SequenceMatcher(None, 
                json.dumps(self.to_treedict(vntree_meta=vntree_meta), default=str), 
                json.dumps(othertree.to_treedict(vntree_meta=vntree_meta), default=str)
                ).ratio()