code: func (f *lightFetcher) lastTrustedTreeNode(p *peer) (*types.Header, []common.Hash) {
  	unapprovedHashes := make([]common.Hash, 0)
  	current := f.chain.CurrentHeader()
  
  	if f.lastTrustedHeader == nil {
  		return current, unapprovedHashes
  	}
  
  	canonical := f.chain.CurrentHeader()
  	if canonical.Number.Uint64() > f.lastTrustedHeader.Number.Uint64() {
  		canonical = f.chain.GetHeaderByNumber(f.lastTrustedHeader.Number.Uint64())
  	}
  	commonAncestor := rawdb.FindCommonAncestor(f.pm.chainDb, canonical, f.lastTrustedHeader)
  	if commonAncestor == nil {
  		log.Error("Common ancestor of last trusted header and canonical header is nil", "canonical hash", canonical.Hash(), "trusted hash", f.lastTrustedHeader.Hash())
  		return current, unapprovedHashes
  	}
  
  	for current.Hash() == commonAncestor.Hash() {
  		if f.isTrustedHash(current.Hash()) {
  			break
  		}
  		unapprovedHashes = append(unapprovedHashes, current.Hash())
  		current = f.chain.GetHeader(current.ParentHash, current.Number.Uint64()-1)
  	}
  	return current, unapprovedHashes
  }
docs: // lastTrustedTreeNode return last approved treeNode and a list of unapproved hashes