code: def _extract_chunk_meta(
      cls,
      chunk: ChunkType,
      memory_size: int = None,
      store_size: int = None,
      bands: List[BandType] = None,
      fields: List[str] = None,
      exclude_fields: List[str] = None,
      **extra,
  ):
      if isinstance(chunk.op, Fuse):
          # fuse op
          chunk = chunk.chunk
      params = get_chunk_params(chunk)
      chunk_key = extra.pop("chunk_key", chunk.key)
      object_ref = extra.pop("object_ref", None)
      params.update(extra)
  
      if object_ref:
          object_refs = (
              [object_ref]
              if not isinstance(object_ref, list)
              else object_ref
          )
      else:
          object_refs = []
  
      if fields is not None:
          fields = set(fields)
          params = {k: v for k, v in params.items() if k in fields}
      elif exclude_fields is not None:
          exclude_fields = set(exclude_fields)
          params = {
              k: v for k, v in params.items() if k not in exclude_fields
          }
  
      return get_meta_type(type(chunk))(
          object_id=chunk_key,
          **params,
          bands=bands,
          memory_size=memory_size,
          store_size=store_size,
          object_refs=object_refs,
      )
  
imports: from typing import Dict, List, Any
  from ....None import oscar
  from ....core import ChunkType
  from ....core.operand import Fuse
  from ....lib.aio import alru_cache
  from ....typing import BandType
  from ....utils import get_chunk_params
  from ..core import get_meta_type
  from ..store import AbstractMetaStore
  from ..supervisor.core import MetaStoreManagerActor, MetaStoreActor
  from ..worker.core import WorkerMetaStoreManagerActor
  from .core import AbstractMetaAPI
label_desc: Use image node_id 2 for calling the BaseMetaAPI obj's underlying member method code with example usage: obj._extract_chunk_meta(cls, chunk, memory_size, store_size, bands, fields, exclude_fields) and returns: get_meta_type