def call_mut(self, method_name, *args, **kwargs):<EOL>
shallow = False<EOL>if '<STR_LIT>' in kwargs:<EOL><INDENT>shallow = kwargs['<STR_LIT>']<EOL>del kwargs['<STR_LIT>']<EOL><DEDENT>def func(a):<EOL><INDENT>a = copy.copy(a) if shallow else copy.deepcopy(a)<EOL>getattr(a, method_name)(*args, **kwargs)<EOL>return cast(B, a)<EOL><DEDENT>return self.modify(func)<EOL>
Call a method on the focus that will mutate it in place.
        Works by making a deep copy of the focus before calling the
        mutating method on it. The return value of that method is ignored.
        You can pass a keyword argument shallow=True to only make a
        shallow copy.

            >>> from lenses import lens
            >>> lens[0].call_mut('sort')([[3, 1, 2], [5, 4]])
            [[1, 2, 3], [5, 4]]

        As a shortcut, you can include the name of the method you want
        to call immediately after `call_mut_`:

            >>> lens[0].call_mut_sort()([[3, 1, 2], [5, 4]])
            [[1, 2, 3], [5, 4]]