def METHOD_NAME(self, parser, ctx):
    def parser_process(value, state):
        # method to hook to the parser.process
        done = False
        value = [value]
        if self.save_other_options:
            # grab everything up to the next option
            while state.rargs and not done:
                for prefix in self._eat_all_parser.prefixes:
                    if state.rargs[0].startswith(prefix):
                        done = True
                if not done:
                    value.append(state.rargs.pop(0))
        else:
            # grab everything remaining
            value += state.rargs
            state.rargs[:] = []
        value = tuple(value)
        # call the actual process
        self._previous_parser_process(value, state)
    retval = super(OptionEatAllArguments, self).METHOD_NAME(parser, ctx)
    for name in self.opts:
        our_parser = parser._long_opt.get(name) or parser._short_opt.get(name)
        if our_parser:
            self._eat_all_parser = our_parser
            self._previous_parser_process = our_parser.process
            our_parser.process = parser_process
            break
    return retval