code: func (db *nodeDB) expireNodes() error {
  	threshold := time.Now().Add(-nodeDBNodeExpiration)
  
  	// Find discovered nodes that are older than the allowance
  	it := db.lvl.NewIterator(nil, nil)
  	defer it.Release()
  
  	for it.Next() {
  		// Skip the item if not a discovery node
  		id, field := splitKey(it.Key())
  		if field != nodeDBDiscoverRoot {
  			continue
  		}
  		// Skip the node if not expired yet (and not self)
  		if !bytes.Equal(id[:], db.self[:]) {
  			if seen := db.lastPong(id); seen.After(threshold) {
  				continue
  			}
  		}
  		// Otherwise delete all associated information
  		db.deleteNode(id)
  	}
  	return nil
  }
docs: // expireNodes iterates over the database and deletes all nodes that have not
  // been seen (i.e. received a pong from) for some allotted time.