code: def _ScanVolumeSystemRoot(self, scan_context, scan_node, base_path_specs):
      
      if not scan_node or not scan_node.path_spec:
        raise errors.ScannerError('Invalid scan node.')
  
      if scan_node.type_indicator == definitions.TYPE_INDICATOR_APFS_CONTAINER:
        volume_identifiers = self._GetAPFSVolumeIdentifiers(scan_node)
  
      elif scan_node.type_indicator == definitions.TYPE_INDICATOR_VSHADOW:
        volume_identifiers = self._GetVSSStoreIdentifiers(scan_node)
        # Process VSS stores (snapshots) starting with the most recent one.
        volume_identifiers.reverse()
  
      else:
        raise errors.ScannerError(
            'Unsupported volume system type: {0:s}.'.format(
                scan_node.type_indicator))
  
      for volume_identifier in volume_identifiers:
        location = '/{0:s}'.format(volume_identifier)
        sub_scan_node = scan_node.GetSubNodeByLocation(location)
        if not sub_scan_node:
          raise errors.ScannerError(
              'Scan node missing for volume identifier: {0:s}.'.format(
                  volume_identifier))
  
        self._ScanVolume(scan_context, sub_scan_node, base_path_specs)
docs: Scans a volume system root scan node for volume and file systems.
  
      Args:
        scan_context (SourceScannerContext): source scanner context.
        scan_node (SourceScanNode): volume system root scan node.
        base_path_specs (list[PathSpec]): file system base path specifications.
  
      Raises:
        ScannerError: if the scan node is invalid, the scan node type is not
            supported or if a sub scan node cannot be retrieved.