code: def MakeSubparser(subparsers, parents, method, arguments=None):
      
      name = ('-'.join(re.split(r'([A-Z][a-z]+)', method.__name__)[1:-1:2])).lower()
      help = method.__doc__.splitlines()[0]
      subparser = subparsers.add_parser(
          name=name, description=help, help=help.rstrip('.'), parents=parents)
      subparser.set_defaults(method=method, positional=[])
      argspec = inspect.getargspec(method)
  
      # Figure out positionals and default argument, if any. Explicitly includes
      # arguments that default to '' but excludes arguments that default to None.
      offset = len(argspec.args) - len(argspec.defaults or []) - 1
      positional = []
      for i in range(1, len(argspec.args)):
          if i > offset and argspec.defaults[i - offset - 1] is None:
              break
          positional.append(argspec.args[i])
      defaults = [None] * offset + list(argspec.defaults or [])
  
      # Add all arguments so they append to args.positional.
      args_help = _DocToArgs(method.__doc__)
      for name, default in zip(positional, defaults):
          if not isinstance(default, (None.__class__, str)):
              continue
          subparser.add_argument(
              name, help=(arguments or {}).get(name, args_help.get(name)),
              default=default, nargs='?' if default is not None else None,
              action=PositionalArg)
      if argspec.varargs:
          subparser.add_argument(
              argspec.varargs, nargs=argparse.REMAINDER,
              help=(arguments or {}).get(argspec.varargs, args_help.get(argspec.varargs)))
      return subparser
docs: Returns an argparse subparser to create a 'subcommand' to adb.