def METHOD_NAME(
    self, src_tokens, src_lengths, prev_output_tokens, tgt_tokens, **kwargs
):
    assert not self.decoder.src_embedding_copy, "do not support embedding copy."
    # encoding
    encoder_out = self.encoder(src_tokens, src_lengths=src_lengths, **kwargs)
    # length prediction
    length_out = self.decoder.forward_length(
        normalize=False, encoder_out=encoder_out
    )
    length_tgt = self.decoder.forward_length_prediction(
        length_out, encoder_out, tgt_tokens
    )
    # decoding
    word_ins_out = self.decoder(
        normalize=False,
        prev_output_tokens=prev_output_tokens,
        encoder_out=encoder_out,
    )
    word_ins_mask = prev_output_tokens.eq(self.unk)
    return {
        "word_ins": {
            "out": word_ins_out,
            "tgt": tgt_tokens,
            "mask": word_ins_mask,
            "ls": self.args.label_smoothing,
            "nll_loss": True,
        },
        "length": {
            "out": length_out,
            "tgt": length_tgt,
            "factor": self.decoder.length_loss_factor,
        },
    }