def batch_create_indexes(self, marqo_index_requests: List[MarqoIndexRequest]) -> List[MarqoIndex]:
        """
        Create multiple Marqo indexes as a single Vespa deployment, in a thread-safe manner.

        This method is intended to facilitate testing and should not be used in production.

        Args:
            marqo_index_requests: List of Marqo indexes to create

        Returns:
            List of created Marqo indexes

        Raises:
            IndexExistsError: If an index already exists
            InvalidVespaApplicationError: If Vespa application is invalid after applying the indexes
            RuntimeError: If deployment lock is not instantiated
            OperationConflictError: If another index creation/deletion operation is
                in progress and the lock cannot be acquired
        """
        index_to_create: List[Tuple[str, MarqoIndex]] = []
        for request in marqo_index_requests:
            # set the default prefixes if not provided
            if request.model.text_query_prefix is None:
                request.model.text_query_prefix = request.model.get_default_text_query_prefix()
            if request.model.text_chunk_prefix is None:
                request.model.text_chunk_prefix = request.model.get_default_text_chunk_prefix()

            schema, marqo_index = vespa_schema_factory(request).generate_schema()
            index_to_create.append((schema, marqo_index))
            logger.debug(f'Creating index {str(request.name)} with schema:\n{schema}')

        with self._vespa_deployment_lock():
            self._get_vespa_application().batch_add_index_setting_and_schema(index_to_create)

        return [index for _, index in index_to_create]

        Create multiple Marqo indexes as a single Vespa deployment, in a thread-safe manner.

        This method is intended to facilitate testing and should not be used in production.

        Args:
            marqo_index_requests: List of Marqo indexes to create

        Returns:
            List of created Marqo indexes

        Raises:
            IndexExistsError: If an index already exists
            InvalidVespaApplicationError: If Vespa application is invalid after applying the indexes
            RuntimeError: If deployment lock is not instantiated
            OperationConflictError: If another index creation/deletion operation is
                in progress and the lock cannot be acquired
        
src/marqo/core/index_management/index_management.py