@classmethod<EOL><INDENT>def make_copy(klass, inst, func=None, argv=None, extra_argv=None, copy_sig=True):<DEDENT>
dest            = klass(func or inst.func)<EOL>dest.argv       = (argv or inst.argv).copy()<EOL>dest.extra_argv = list(extra_argv if extra_argv else inst.extra_argv)<EOL>if copy_sig:<EOL><INDENT>dest.__sig_from_partial(inst)<EOL><DEDENT>return dest<EOL>
Makes a new instance of the partial application wrapper based on
        an existing instance, optionally overriding the original's wrapped
        function and/or saved arguments.

        :param inst: The partial instance we're copying
        :param func: Override the original's wrapped function
        :param argv: Override saved argument values
        :param extra_argv: Override saved extra positional arguments
        :param copy_sig: Copy original's signature?
        :rtype: New partial wrapper instance