def METHOD_NAME():
    arg_parser = ArgumentParser()
    arg_parser.add_argument(
        '-d',
        '--dump-dependencies',
        type=lambda x: bool(strtobool(x)),
        nargs='?',
        const=True,
        default=False,
        help='Just dump module dependencies, without code generation',
    )
    arg_parser.add_argument(
        '-r',
        '--root-directory',
        type=str,
        default='.',
        help='Root directory for code generation.',
    )
    arg_parser.add_argument(
        '-isystem',
        '--system-includes',
        type=str,
        default='',
        help='Directories that will been included in CMakeLists.txt',
    )
    arg_parser.add_argument(
        '-I',
        '--includes',
        type=str,
        default='',
        help='Directories that will been included in CMakeLists.txt',
    )
    arg_parser.add_argument(
        '-l',
        '--language',
        type=str,
        default='cpp',
        help="Language interfaces to generate",
    )
    arg_parser.add_argument(
        '-s',
        '--source',
        type=str,
        required=True,
        help='Data structure source file to parse',
    )
    arg_parser.add_argument(
        '-t', '--target', type=str, default=None, help='Output path to be generated'
    )
    arg_parser.add_argument(
        '-b',
        '--build-directory',
        type=str,
        default=None,
        help='Build directory that contains compilation database '
        '(compile_commands.json)',
    )
    arg_parser.add_argument(
        '-p',
        '--package',
        type=str,
        default=None,
        help='Package directory for Java/Python bindings',
    )
    arg_parser.add_argument(
        '-pkg',
        '--package-name',
        type=str,
        default=None,
        help="Package name for Java/Python bindings",
    )
    arg_parser.add_argument(
        '-lib',
        '--ffilibrary-name',
        type=str,
        default=None,
        help="FFI library name for Java/Python bindings",
    )
    arg_parser.add_argument(
        '-e',
        '--excludes',
        type=str,
        default=None,
        help="Excluded declarations for Java/Python bindings",
    )
    arg_parser.add_argument(
        '-fwd',
        '--forwards',
        type=str,
        default=None,
        help="Forward declrations for Java/Python bindings",
    )
    arg_parser.add_argument(
        '-f',
        '--extra-flags',
        type=str,
        action='append',
        default=list(),
        help='Extra flags that will be passed to libclang',
    )
    arg_parser.add_argument(
        '--delayed', action='store_true', help='Delayed the template parsing'
    )
    arg_parser.add_argument(
        '-v',
        '--verbose',
        action='store_true',
        help='Run codegen script with verbose output',
    )
    return arg_parser.parse_args()