code: func (hc *HeaderChain) GetBlockNumber(hash common.Hash) *uint64 {
  	if cached, ok := hc.numberCache.Get(hash); ok {
  		number := cached.(uint64)
  		return &number
  	}
  	number := rawdb.ReadHeaderNumber(hc.chainDb, hash)
  	if number != nil {
  		hc.numberCache.Add(hash, *number)
  	}
  	return number
  }
docs: // GetBlockNumber retrieves the block number belonging to the given hash
  // from the cache or database