class_docstr: RNN layer serialization.
code: def _get_serialized_attributes_internal(self, serialization_cache):
      objects, functions = super(
          RNNSavedModelSaver, self
      )._get_serialized_attributes_internal(serialization_cache)
      states = data_structures.wrap_or_unwrap(self.obj.states)
      # SaveModel require all the objects to be Trackable when saving.
      # If the states is still a tuple after wrap_or_unwrap, it means it doesn't
      # contain any trackable item within it, eg empty tuple or (None, None) for
      # stateless ConvLSTM2D. We convert them to list so that wrap_or_unwrap can
      # make it a Trackable again for saving. When loaded, ConvLSTM2D is
      # able to handle the tuple/list conversion.
      if isinstance(states, tuple):
          states = data_structures.wrap_or_unwrap(list(states))
      objects["states"] = states
      return objects, functions
  
imports: from tensorflow.python.keras.mixed_precision import policy
  from tensorflow.python.keras.saving.saved_model import base_serialization
  from tensorflow.python.keras.saving.saved_model import constants
  from tensorflow.python.keras.saving.saved_model import save_impl
  from tensorflow.python.keras.saving.saved_model import serialized_attributes
  from tensorflow.python.keras.utils import generic_utils
  from tensorflow.python.trackable import data_structures
  from tensorflow.python.util import nest
label_desc: Use image node_id 2 for calling the RNNSavedModelSaver obj's underlying member method code with example usage: obj._get_serialized_attributes_internal(serialization_cache) and returns: objects,  functions