code: def register_offline_containers(
      self,
      base_path: Path,
      project: Project,
      offline_dirs: Iterable[str],
  ) -> List[ApiExperiment]:
      result = []
      for offline_dir in offline_dirs:
          offline_path = base_path / OFFLINE_DIRECTORY / offline_dir
          if offline_path.is_dir():
              container_type, _ = split_dir_name(dir_name=offline_dir)
              container = self._register_offline_container(
                  project, container_type=container_type
              )
              if container:
                  self._move_offline_container(
                      base_path=base_path,
                      offline_dir=offline_dir,
                      server_id=container.id,
                      server_type=container.type,
                  )
                  logger.info(
                      "Offline container %s registered as %s",
                      offline_dir,
                      get_qualified_name(container),
                  )
                  result.append(container)
          else:
              logger.warning(
                  "Offline container %s not found on disk.", offline_dir
              )
      return result
  
imports: import logging
  import os
  import threading
  import time
  from pathlib import Path
  from typing import Any, Callable, Dict, Iterable, List, Optional, Sequence
  from neptune.cli.abstract_backend_runner import AbstractBackendRunner
  from neptune.cli.utils import get_metadata_container, get_offline_dirs, get_project, get_qualified_name, is_container_synced_and_remove_junk, iterate_containers, split_dir_name
  from neptune.common.exceptions import NeptuneConnectionLostException
  from neptune.constants import ASYNC_DIRECTORY, OFFLINE_DIRECTORY, OFFLINE_NAME_PREFIX
  from neptune.envs import NEPTUNE_SYNC_BATCH_TIMEOUT_ENV
  from neptune.exceptions import CannotSynchronizeOfflineRunsWithoutProject
  from neptune.internal.backends.api_model import ApiExperiment, Project
  from neptune.internal.container_type import ContainerType
  from neptune.internal.disk_queue import DiskQueue
  from neptune.internal.id_formats import QualifiedName, UniqueId
  from neptune.internal.operation import Operation
  from neptune.internal.operation_processors.operation_storage import OperationStorage
  from neptune.internal.utils.logger import logger
label_desc: Use image node_id 8 for calling the SyncRunner obj's underlying member method code with example usage: obj.register_offline_containers(base_path, project, offline_dirs) and returns: result