<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _ScanVolumeSystemRootNode( self, scan_context, scan_node, auto_recurse=True):
 """Scans a volume system root node for supported formats. Args: scan_context (SourceScannerContext):
 source scanner context. scan_node (SourceScanNode):
 source scan node. auto_recurse (Optional[bool]):
 True if the scan should automatically recurse as far as possible. Raises: ValueError: if the scan context or scan node is invalid. """

    if scan_node.type_indicator == definitions.TYPE_INDICATOR_VSHADOW:
      # For VSS add a scan node for the current volume.
      path_spec = self.ScanForFileSystem(scan_node.path_spec.parent)
      if path_spec:
        scan_context.AddScanNode(path_spec, scan_node.parent_node)

    # Determine the path specifications of the sub file entries.
    file_entry = resolver.Resolver.OpenFileEntry(
        scan_node.path_spec, resolver_context=self._resolver_context)

    for sub_file_entry in file_entry.sub_file_entries:
      sub_scan_node = scan_context.AddScanNode(
          sub_file_entry.path_spec, scan_node)

      if scan_node.type_indicator == definitions.TYPE_INDICATOR_VSHADOW:
        # Since scanning for file systems in VSS snapshot volumes can
        # be expensive we only do this when explicitly asked for.
        continue

      if auto_recurse or not scan_context.updated:
        self._ScanNode(scan_context, sub_scan_node, auto_recurse=auto_recurse)