code: def WriteScanNode(self, scan_context, scan_node, indentation=''):
      
      if not scan_node:
        return
  
      values = []
  
      part_index = getattr(scan_node.path_spec, 'part_index', None)
      if part_index is not None:
        values.append('{0:d}'.format(part_index))
  
      store_index = getattr(scan_node.path_spec, 'store_index', None)
      if store_index is not None:
        values.append('{0:d}'.format(store_index))
  
      start_offset = getattr(scan_node.path_spec, 'start_offset', None)
      if start_offset is not None:
        values.append('start offset: {0:d} (0x{0:08x})'.format(start_offset))
  
      location = getattr(scan_node.path_spec, 'location', None)
      if location is not None:
        values.append('location: {0:s}'.format(location))
  
      values = ', '.join(values)
  
      flags = ''
      if scan_node in scan_context.locked_scan_nodes:
        flags = ' [LOCKED]'
  
      print('{0:s}{1:s}: {2:s}{3:s}'.format(
          indentation, scan_node.path_spec.type_indicator, values, flags))
  
      indentation = '  {0:s}'.format(indentation)
      for sub_scan_node in scan_node.sub_nodes:
        self.WriteScanNode(scan_context, sub_scan_node, indentation=indentation)
docs: Writes the source scanner node to stdout.
  
      Args:
        scan_context (SourceScannerContext): the source scanner context.
        scan_node (SourceScanNode): the scan node.
        indentation (Optional[str]): indentation.