code: def __str__(self):
      stream = [str(l) for l in self.layers_params]
      if self.layers_params:
          if self.num_streams > 1:
              stream = [""] + ["\t" + l for l in stream]
              result = stream * self.num_streams
              result[0 :: len(stream)] = [
                  "Stream {}".format(i) for i in range(self.num_streams)
              ]
          else:
              result = stream
          return "\n".join(result)
      else:
          return "No layers"
  
file_path: coach/rl_coach/architectures/tensorflow_components/middlewares/fc_middleware.py
imports: from typing import Union, List
  import tensorflow
  from rl_coach.architectures.tensorflow_components.layers import Dense
  from rl_coach.architectures.tensorflow_components.middlewares.middleware import Middleware
  from rl_coach.base_parameters import MiddlewareScheme
  from rl_coach.core_types import Middleware_FC_Embedding
  from rl_coach.utils import force_list
label_desc: Use image node_id 4 for calling the FCMiddleware obj's underlying member method code with example usage: obj.__str__() and returns: str, str