def METHOD_NAME():
    parser = argparse.ArgumentParser(usage='%(prog)s [options] oat files')
    parser.add_argument('-a', '--all',
            action='store_true', dest='show_all',
            help='Show all information')
    parser.add_argument('-H', '--header',
            action='store_true', dest='show_header',
            help='Display header')
    parser.add_argument('-c', '--classes',
            action='store_true', dest='show_classes',
            help='Display classes')
    parser.add_argument('-d', '--dex',
            action='store_true', dest='show_dex',
            help='Display Dex files')
    parser.add_argument('-m', '--methods',
            action='store_true', dest='show_methods',
            help='Display Methods')
    parser.add_argument('-x', '--extract',
            action='store_true', dest='extract_dex',
            help='Extract DEX files')
    parser.add_argument("binary",
            metavar="<oat-file>",
            help='Target OAT File')
    # Logging setup
    logger_group = parser.add_argument_group('Logger')
    verbosity = logger_group.add_mutually_exclusive_group()
    verbosity.add_argument('--debug',
            dest='main_verbosity',
            action='store_const',
            const=lief.logging.LOGGING_LEVEL.DEBUG)
    verbosity.add_argument('--trace',
            dest='main_verbosity',
            action='store_const',
            const=lief.logging.LOGGING_LEVEL.TRACE)
    verbosity.add_argument('--info',
            dest='main_verbosity',
            action='store_const',
            const=lief.logging.LOGGING_LEVEL.INFO)
    verbosity.add_argument('--warn',
            dest='main_verbosity',
            action='store_const',
            const=lief.logging.LOGGING_LEVEL.WARNING)
    verbosity.add_argument('--err',
            dest='main_verbosity',
            action='store_const',
            const=lief.logging.LOGGING_LEVEL.ERROR)
    verbosity.add_argument('--critical',
            dest='main_verbosity',
            action='store_const',
            const=lief.logging.LOGGING_LEVEL.CRITICAL)
    parser.set_defaults(main_verbosity=lief.logging.LOGGING_LEVEL.WARNING)
    args = parser.parse_args()
    lief.logging.set_level(args.main_verbosity)
    binary = None
    try:
        binary = OAT.parse(args.binary)
    except lief.exception as e:
        print(e)
        sys.exit(1)
    print_information(binary)
    if args.show_header or args.show_all:
        print_header(binary)
    if (args.show_dex or args.show_all) and len(binary.oat_dex_files) > 0:
        print_dex_files(binary)
    if args.show_classes and len(binary.classes) > 0:
        print_classes(binary)
    if args.show_methods and len(binary.methods) > 0:
        print_methods(binary)
    sys.exit(EXIT_STATUS)