def METHOD_NAME(self, parser):
    # Positional arguments
    parser.add_argument(
        'categories',
        nargs='+',
        type=str,
        choices=[
            'arrest',
            'border_stop',
            'denial_of_access',
            'equipment_search',
            'physical_attack',
            'leak_case',
            'subpoena',
            'equipment_damage',
            'prior_restraint',
            'chilling_statement',
            'other_incident',
        ]
    )
    data_group = parser.add_argument_group(
        'Incident Data options',
        'Options that can apply to all incidents being created.'
    )
    general_group = parser.add_argument_group(
        'General options',
        'How many and what type of incidents will be created',
    )
    general_group.add_argument(
        '--media', action='store_true',
        help="When this flag is used, existing images in the wagtail database will be used as the incident's teaser image and in the page's body content.",
    )
    general_group.add_argument(
        '--show-pks', action='store_true',
        help='Output primary keys of any incidents created',
    )
    general_group.add_argument(
        '-n', '--number', default=1, type=int, metavar='NUM',
        help='Generate NUM incidents',
    )
    arrest_group = parser.add_argument_group(
        'Arrest options',
        'options that apply to incidients created in the "arrest" category.',
    )
    arrest_group.add_argument(
        '--current-charges', default=2, type=int, metavar='NUM',
        help='Generate NUM current charges.'
    )
    arrest_group.add_argument(
        '--dropped-charges', default=2, type=int, metavar='NUM',
        help='Generate NUM dropped charges.',
    )
    border_group = parser.add_argument_group(
        'Border Stop options',
        'options that apply to incidients created in the "border stop" category.',
    )
    border_group.add_argument(
        '--target-nationalities', default=2, type=int, metavar='NUM',
        help='Generate NUM nationalities.'
    )
    denial_group = parser.add_argument_group(
        'Denial of Access options',
        'options that apply to incidients created in the "denial of access" category.',
    )
    denial_group.add_argument(
        '--politicians', default=2, type=int, metavar='NUM',
        help='Generate NUM politicians/public figures.',
    )
    leak_group = parser.add_argument_group(
        'Leak Case options',
        'options that apply to incidients created in the "Leak Case" category.',
    )
    leak_group.add_argument(
        '--workers', default=2, type=int, metavar='NUM',
        help='Generate NUM workers whose communications were obtained.',
    )
    data_group.add_argument(
        '--gen-venues', default=2, type=int, metavar='NUM',
        help='Generate NUM venues.',
    )
    data_group.add_argument(
        '--venue', action='append', metavar='NAME',
        help='Use venue named NAME (in addition to other randomized venues).  This flag may be provided multiple times.',
    )
    data_group.add_argument(
        '--gen-authors', default=2, type=int, metavar='NUM',
        help='Generate NUM authors.',
    )
    data_group.add_argument(
        '--author', action='append', metavar='NAME',
        help='Use author named NAME (in addition to other randomized authors).  This flag may be provided multiple times.',
    )
    data_group.add_argument(
        '--gen-journalists', default=2, type=int, metavar='NUM',
        help='Generate NUM targeted journalists.',
    )
    data_group.add_argument(
        '--gen-institutions', default=2, type=int, metavar='NUM',
        help='Generate NUM targeted institutions.',
    )