docs: def filter_all_reachable_leaves_many(self, identifier_filters, language, forbidden_identifiers=None):
          """
          Provides the same functionality as .. py:method:: ItemManager.filter_all_reachable_leaves(),
          but for more filters in the same time.
  
          Args:
              identifier_filters: list of identifier filters
              language (str): language used for further filtering (some objects
                  for different languages share the same item
  
          Returns:
              list: list of list of item ids
          """
          for i, identifier_filter in enumerate(identifier_filters):
              if len(identifier_filter) == 1 and not isinstance(identifier_filter[0], list):
                  identifier_filters[i] = [identifier_filter]
          item_identifiers = [
              identifier[1:] if identifier.startswith('-') else identifier
              for identifier_filter in identifier_filters
              for identifier in set(flatten(identifier_filter))
          ]
          if forbidden_identifiers is None:
              forbidden_identifiers = []
          for identifier in forbidden_identifiers:
              item_identifiers.append(identifier)
          translated = self.translate_identifiers(item_identifiers, language)
          forbidden_item_ids = {translated[identifier] for identifier in forbidden_identifiers}
          leaves = self.get_leaves({translated[i] for i in item_identifiers}, language=language, forbidden_item_ids=forbidden_item_ids)
          result = []
          for identifier_filter in identifier_filters:
              if len(identifier_filter) == 0:
                  result.append(self.get_all_available_leaves(language=language, forbidden_item_ids=forbidden_item_ids))
                  continue
              filter_result = None
              filter_neg_result = set()
              for inner_filter in identifier_filter:
                  inner_result = None
                  inner_neg_result = None
                  if len(inner_filter) == 0:
                      raise Exception('Empty nested filters are not allowed.')
                  for identifier in inner_filter:
                      if inner_neg_result is not None:
                          raise Exception('Nested filters can not contain multiple statements.')
                      if identifier.startswith('-'):
                          inner_neg_result = set(leaves[translated[identifier[1:]]])
                      else:
                          if inner_result is None:
                              inner_result = set()
                          inner_result |= set(leaves[translated[identifier]])
                  if inner_result is not None:
                      if filter_result is None:
                          filter_result = inner_result
                      else:
                          filter_result &= inner_result
                  if inner_neg_result is not None:
                      filter_neg_result != inner_neg_result
              result.append(sorted(list(filter_result - filter_neg_result)))
          return result