code: def add_module(
      self,
      *,
      module_id: ModuleID,
      module_spec: SingleAgentRLModuleSpec,
  ) -> None:
      # TODO(Avnishn):
      # WARNING:tensorflow:Using MirroredStrategy eagerly has significant overhead
      # currently. We will be working on improving this in the future, but for now
      # please wrap `call_for_each_replica` or `experimental_run` or `run` inside a
      # tf.function to get the best performance.
      # I get this warning any time I add a new module. I see the warning a few times
      # and then it disappears. I think that I will need to open an issue with the TF
      # team.
      with self._strategy.scope():
          super().add_module(
              module_id=module_id,
              module_spec=module_spec,
          )
      if self._enable_tf_function:
          self._possibly_traced_update = tf.function(
              self._untraced_update, reduce_retracing=True
          )
  
imports: import json
  import logging
  import pathlib
  from typing import Any, Callable, Dict, Hashable, Sequence, Tuple, TYPE_CHECKING, Union
  from ray.rllib.core.learner.learner import Learner
  from ray.rllib.core.rl_module.rl_module import RLModule, SingleAgentRLModuleSpec
  from ray.rllib.core.rl_module.tf.tf_rl_module import TfRLModule
  from ray.rllib.policy.eager_tf_policy import _convert_to_tf
  from ray.rllib.policy.sample_batch import MultiAgentBatch
  from ray.rllib.utils.annotations import override, OverrideToImplementCustomLogic
  from ray.rllib.utils.deprecation import deprecation_warning
  from ray.rllib.utils.framework import try_import_tf
  from ray.rllib.utils.metrics import ALL_MODULES
  from ray.rllib.utils.nested_dict import NestedDict
  from ray.rllib.utils.serialization import convert_numpy_to_python_primitives
  from ray.rllib.utils.typing import ModuleID, Optimizer, Param, ParamDict, TensorType
label_desc: Use image node_id 20 for calling the TfLearner obj's underlying member method code with example usage: obj.add_module() without return types