code: def make_parser(cls, **kwargs):
          
          # Build a parent parser
          parser = argparse.ArgumentParser(**kwargs)
  
          # Add multiple sub-commands:
          subparsers = parser.add_subparsers(help='Available commands.', dest='suite_commands')
  
          # 'Generate' command
          file_parser = subparsers.add_parser('generate', help='Generates solutions and projects based on one or more configuration files.')
          file_parser.add_argument('configuration_filenames', metavar='file', nargs='+', help='The configuration file that contains the [vsgen.*] sections contains the vsgen input.')
  
          # 'Auto' command
          auto_parser = subparsers.add_parser('auto', help='Automatically generates a solution and project collection from vsgen preset and a single directory.')
  
          # Build a subparser for each type of project
          suite_parsers = auto_parser.add_subparsers(help='Available Project Types.', dest='suite_type')
          for ek, ev in entrypoints('vsgen.suites').items():
              suite_parser = ev.make_parser(add_help=False)
              suite_parsers.add_parser(ek, help='Automatically generates a solution and "{}" project from a single directory.'.format(ek), parents=[suite_parser])
          return parser
docs: Creates a :class:`~argparse.ArgumentParser` instances to work with VSGSuite classes.
  
          :param kwargs:  List of additional keyworded arguments to be passed into the :class:`~argparse.ArgumentParser`.
          :return:  A :class:`~argparse.ArgumentParser` instance.