code: def rnn_forward(self, ey, z_list, c_list, z_prev, c_prev):
      if self.dtype == "lstm":
          z_list[0], c_list[0] = self.decoder[0](
              ey, (z_prev[0], c_prev[0])
          )
          for i in range(1, self.dlayers):
              z_list[i], c_list[i] = self.decoder[i](
                  self.dropout_dec[i - 1](z_list[i - 1]),
                  (z_prev[i], c_prev[i]),
              )
      else:
          z_list[0] = self.decoder[0](ey, z_prev[0])
          for i in range(1, self.dlayers):
              z_list[i] = self.decoder[i](
                  self.dropout_dec[i - 1](z_list[i - 1]), z_prev[i]
              )
      return z_list, c_list
  
file_path: espnet/espnet2/asr/decoder/rnn_decoder.py
imports: import random
  import numpy
  import torch
  import torch.nn.functional
  from typeguard import check_argument_types
  from espnet2.asr.decoder.abs_decoder import AbsDecoder
  from espnet2.utils.get_default_kwargs import get_default_kwargs
  from espnet.nets.pytorch_backend.nets_utils import make_pad_mask, to_device
  from espnet.nets.pytorch_backend.rnn.attentions import initial_att
label_desc: Use image node_id 3 for calling the RNNDecoder obj's underlying member method code with example usage: obj.rnn_forward(ey, z_list, c_list, z_prev, c_prev) and returns: z_list,  c_list