code: def _pop_impl(self, ref, sub_path: List[str], attr_path: List[str]):
      if not sub_path:
          return
  
      head, tail = sub_path[0], sub_path[1:]
      if head not in ref:
          raise MetadataInconsistency(
              "Cannot delete {}. Attribute not found.".format(
                  path_to_str(attr_path)
              )
          )
  
      if not tail:
          if isinstance(ref[head], self._node_type):
              raise MetadataInconsistency(
                  "Cannot delete {}. It's a namespace, not an attribute.".format(
                      path_to_str(attr_path)
                  )
              )
          del ref[head]
      else:
          self._pop_impl(ref[head], tail, attr_path)
          if not ref[head]:
              del ref[head]
  
file_path: neptune-client/src/neptune/internal/container_structure.py
imports: from collections import deque
  from typing import Callable, Generic, List, Optional, TypeVar, Union
  from neptune.exceptions import MetadataInconsistency
  from neptune.internal.utils.paths import path_to_str
label_desc: Use image node_id 8 for calling the ContainerStructure obj's underlying member method code with example usage: obj._pop_impl(ref, sub_path, attr_path) without return types