def METHOD_NAME(self, value):
    """Try using ``value`` as a possible candidate improvement.
    Return True if it works.
    """
    value = self.make_immutable(value)
    self.check_invariants(value)
    if not self.left_is_better(value, self.current):
        if value != self.current and (value == value):
            self.debug(
                "Rejected %r as worse than self.current=%r" % (value, self.current)
            )
        return False
    if value in self.__seen:
        return False
    self.__seen.add(value)
    if self.__predicate(value):
        self.debug("shrinking to %r" % (value,))
        self.changes += 1
        self.current = value
        return True
    return False