code: def lockfile_data(self) -> Dict[str, Any]:
      if not self._lockfile_data:
          logger.debug(
              "Lockfile for '%s' not found", self.dvcfile.relpath
          )
      return self._lockfile_data
  
imports: from collections.abc import Mapping
  from copy import deepcopy
  from itertools import chain
  from typing import TYPE_CHECKING, Any, Dict, Iterable, Optional, Tuple
  from funcy import get_in, lcat, once, project
  from dvc import dependency, output
  from dvc.log import logger
  from dvc.parsing import FOREACH_KWD, JOIN, MATRIX_KWD, EntryNotFound
  from dvc.utils.objects import cached_property
  from dvc_data.hashfile.meta import Meta
  from .None import PipelineStage, Stage, loads_from
  from .exceptions import StageNameUnspecified, StageNotFound
  from .params import StageParams
  from .utils import fill_stage_dependencies, resolve_paths
label_desc: Use image node_id 2 for calling the StageLoader obj's underlying member method code with example usage: obj.lockfile_data() and returns: self