@singledispatch<EOL>def contains_remove(self, item):<EOL>
try:<EOL><INDENT>self._lens_contains_remove<EOL><DEDENT>except AttributeError:<EOL><INDENT>message = '<STR_LIT>'<EOL>raise NotImplementedError(message.format(type(self)))<EOL><DEDENT>else:<EOL><INDENT>return self._lens_contains_remove(item)<EOL><DEDENT>
Takes a collection and an item and returns a new collection
    of the same type with that item removed. The notion of "contains"
    is defined by the object itself; the following must be ``True``:

    .. code-block:: python

        item not in contains_remove(obj, item)

    This function is used by some lenses (particularly ContainsLens)
    to remove items from containers when necessary.

    The corresponding method call for this hook is
    ``obj._lens_contains_remove(item)``.

    There is no default implementation.