def METHOD_NAME():
    """Main function"""
    parser = argparse.ArgumentParser(description="Compare gathered baselines")
    # Shared options for all subcommands
    shared_parser = argparse.ArgumentParser(add_help=False)
    shared_parser.add_argument(
        "--tests",
        help="List of test types",
        nargs="+",
        action="store",
        choices=TESTS,
        default=TESTS,
    )
    shared_parser.add_argument(
        "--kernels",
        help="List of host kernel versions",
        nargs="+",
        action="store",
        choices=KERNELS,
        default=KERNELS,
    )
    shared_parser.add_argument(
        "--codenames",
        help="List of CPU codenames. The first one is used as basis.",
        action="store",
        nargs="+",
        choices=list(CODENAME2DICT.keys()),
        default=list(CODENAME2DICT.keys()),
    )
    shared_parser.add_argument(
        "-o",
        "--output",
        help="Path of output file.",
        action="store",
        default=DEFAULT_RESULT_FILEPATH,
    )
    shared_parser.add_argument(
        "-a",
        "--auxiliary",
        help="Include auxiliary information",
        action="store_true",
    )
    subparsers = parser.add_subparsers(title="modes")
    # Subcommand options for comparing baselines between CPUs
    parser_cpu = subparsers.add_parser(
        "cpu", parents=[shared_parser], help="Compare between CPUs."
    )
    parser_cpu.set_defaults(handler=cmd_cpu)
    parser_cpu.add_argument(
        "-d",
        "--directory",
        help="Path of directory containing JSON files of baselines.",
        action="store",
        default=DEFAULT_BASELINE_DIRECTORY,
    )
    # Subcommand options for comparing baselines between directories
    parser_dir = subparsers.add_parser(
        "directory", parents=[shared_parser], help="Compare between two directories."
    )
    parser_dir.set_defaults(handler=cmd_directory)
    parser_dir.add_argument(
        "-s",
        "--source",
        help="Path of source directory containing JSON files of baselines.",
        action="store",
        required=True,
    )
    parser_dir.add_argument(
        "-t",
        "--target",
        help="Path of target directory containing JSON files of baselines.",
        action="store",
        required=True,
    )
    # Subcommand options for comparing baselines between commit hashes
    parser_commit = subparsers.add_parser(
        "commit", parents=[shared_parser], help="Compare between two commit hashes."
    )
    parser_commit.set_defaults(handler=cmd_commit)
    parser_commit.add_argument(
        "-d",
        "--directory",
        help="Path of directory containing JSON files of baselines.",
        action="store",
        default=DEFAULT_BASELINE_DIRECTORY,
    )
    parser_commit.add_argument(
        "-s",
        "--source",
        help="Source commit hash.",
        action="store",
        required=True,
    )
    parser_commit.add_argument(
        "-t",
        "--target",
        help="Target commit hash.",
        action="store",
    )
    # Subcommand options for comparing baselines with the latest commit
    parser_latest = subparsers.add_parser(
        "latest", parents=[shared_parser], help="Compare with the latest commit."
    )
    parser_latest.set_defaults(handler=cmd_latest)
    parser_latest.add_argument(
        "-d",
        "--directory",
        help="Path of directory containing JSON files of baselines.",
        action="store",
        default=DEFAULT_BASELINE_DIRECTORY,
    )
    # Parse arguments
    args = parser.parse_args()
    if hasattr(args, "handler"):
        args.handler(args)
    else:
        parser.print_help()