def METHOD_NAME(parser):
    """Add model-specific arguments to the parser."""
    # fmt: off
    parser.add_argument('--dropout', type=float, metavar='D',
                        help='dropout probability')
    parser.add_argument('--decoder-embed-dim', type=int, metavar='N',
                        help='decoder embedding dimension')
    parser.add_argument('--decoder-embed-path', type=str, metavar='STR',
                        help='path to pre-trained decoder embedding')
    parser.add_argument('--decoder-hidden-size', type=int, metavar='N',
                        help='decoder hidden size')
    parser.add_argument('--decoder-layers', type=int, metavar='N',
                        help='number of decoder layers')
    parser.add_argument('--decoder-out-embed-dim', type=int, metavar='N',
                        help='decoder output embedding dimension')
    parser.add_argument('--decoder-attention', type=str, metavar='BOOL',
                        help='decoder attention')
    parser.add_argument('--adaptive-softmax-cutoff', metavar='EXPR',
                        help='comma separated list of adaptive softmax cutoff points. '
                             'Must be used with adaptive_loss criterion')
    parser.add_argument('--residuals', default=False,
                        action='store_true',
                        help='applying residuals between LSTM layers')
    # Granular dropout settings (if not specified these default to --dropout)
    parser.add_argument('--decoder-dropout-in', type=float, metavar='D',
                        help='dropout probability for decoder input embedding')
    parser.add_argument('--decoder-dropout-out', type=float, metavar='D',
                        help='dropout probability for decoder output')
    parser.add_argument('--share-decoder-input-output-embed', default=False,
                        action='store_true',
                        help='share decoder input and output embeddings')
    # fmt: on