def METHOD_NAME(cls, args, task):
    """Build a new model instance."""
    # make sure all arguments are present in older models
    base_lm_architecture(args)
    if hasattr(args, "max_target_positions") and not hasattr(
        args, "tokens_per_sample"
    ):
        args.tokens_per_sample = args.max_target_positions
    decoder = FConvDecoder(
        dictionary=task.target_dictionary,
        embed_dim=args.decoder_embed_dim,
        convolutions=eval(args.decoder_layers),
        out_embed_dim=args.decoder_embed_dim,
        attention=eval(args.decoder_attention),
        dropout=args.dropout,
        max_positions=args.tokens_per_sample,
        share_embed=False,
        positional_embeddings=False,
        adaptive_softmax_cutoff=(
            utils.eval_str_list(args.adaptive_softmax_cutoff, type=int)
            if args.criterion == "adaptive_loss"
            else None
        ),
        adaptive_softmax_dropout=args.adaptive_softmax_dropout,
    )
    return FConvLanguageModel(decoder)