code: def GetUnscannedSubNode(self):
      
      if not self.sub_nodes and not self.scanned:
        return self
  
      for sub_node in self.sub_nodes:
        result = sub_node.GetUnscannedSubNode()
        if result:
          return result
  
      return None
docs: Retrieves the first unscanned sub node.
  
      Returns:
        SourceScanNode: sub scan node or None if not available.