docs: def _fluent_params(self, fluents, ordering) -> FluentParamsList:
          '''Returns the instantiated `fluents` for the given `ordering`.
  
          For each fluent in `fluents`, it instantiates each parameter
          type w.r.t. the contents of the object table.
  
          Returns:
              Sequence[Tuple[str, List[str]]]: A tuple of pairs of fluent name
              and a list of instantiated fluents represented as strings.
          '''
          variables = []
          for fluent_id in ordering:
              fluent = fluents[fluent_id]
              param_types = fluent.param_types
              objects = ()
              names = []
              if param_types is None:
                  names = [fluent.name]
              else:
                  objects = tuple(self.object_table[ptype]['objects'] for ptype in param_types)
                  for values in itertools.product(*objects):
                      values = ','.join(values)
                      var_name = '{}({})'.format(fluent.name, values)
                      names.append(var_name)
              variables.append((fluent_id, names))
          return tuple(variables)