def find_max(self, predicate, max_=None):
        """
        Return the largest item in or under this node that satisfies
        *predicate*.
        """
        if predicate(self.value):
            max_ = self.value
            next_node = self._greater
        else:
            next_node = self._lesser
        if next_node is None:
            return max_
        return next_node.find_max(predicate, max_)
def find_max ( self , predicate , max_ = None ) : if predicate ( self . value ) : max_ = self . value next_node = self . _greater else : next_node = self . _lesser if next_node is None : return max_ return next_node . find_max ( predicate , max_ )
Return the largest item in or under this node that satisfies
        *predicate*.