code: def list_containers(
      base_path: Path,
      synced_containers: Optional[Sequence[ApiExperiment]],
      unsynced_containers: Sequence[ApiExperiment],
      offline_dirs: Sequence[str],
  ) -> None:
      if (
          not synced_containers
          and not unsynced_containers
          and not offline_dirs
      ):
          logger.info("There are no Neptune objects in %s", base_path)
          sys.exit(1)
  
      StatusRunner.log_unsync_objects(unsynced_containers)
  
      StatusRunner.log_offline_objects(offline_dirs)
  
      if not unsynced_containers:
          logger.info(
              "\nThere are no unsynchronized objects in %s", base_path
          )
  
      if not synced_containers:
          logger.info(
              "\nThere are no synchronized objects in %s", base_path
          )
  
      logger.info(
          "\nPlease run with the `neptune sync --help` to see example commands."
      )
  
file_path: neptune-client/src/neptune/cli/status.py
imports: import sys
  import textwrap
  from pathlib import Path
  from typing import Optional, Sequence
  from neptune.cli.abstract_backend_runner import AbstractBackendRunner
  from neptune.cli.container_manager import ContainersManager
  from neptune.cli.utils import get_offline_dirs, get_qualified_name
  from neptune.constants import OFFLINE_NAME_PREFIX
  from neptune.envs import PROJECT_ENV_NAME
  from neptune.internal.backends.api_model import ApiExperiment
  from neptune.internal.utils.logger import logger
label_desc: Use image node_id 1 for calling the StatusRunner obj's underlying member method code with example usage: obj.list_containers(base_path, synced_containers, unsynced_containers, offline_dirs) without return types