code: def with_argument_list(*args: List[Callable], preserve_quotes: bool = False) -> Callable[[List], Optional[bool]]:
      
      import functools
  
      def arg_decorator(func: Callable):
          @functools.wraps(func)
          def cmd_wrapper(cmd2_instance, statement: Union[Statement, str]):
              _, parsed_arglist = cmd2_instance.statement_parser.get_command_arg_list(command_name,
                                                                                      statement,
                                                                                      preserve_quotes)
  
              return func(cmd2_instance, parsed_arglist)
  
          command_name = func.__name__[len(COMMAND_FUNC_PREFIX):]
          cmd_wrapper.__doc__ = func.__doc__
          return cmd_wrapper
  
      if len(args) == 1 and callable(args[0]):
          return arg_decorator(args[0])
      else:
          return arg_decorator
docs: A decorator to alter the arguments passed to a do_* cmd2 method. Default passes a string of whatever the user
      typed. With this decorator, the decorated method will receive a list of arguments parsed from user input.
  
      :param args: Single-element positional argument list containing do_* method this decorator is wrapping
      :param preserve_quotes: if True, then argument quotes will not be stripped
      :return: function that gets passed a list of argument strings