code: func (hc *HeaderChain) GetHeader(hash common.Hash, number uint64) *types.Header {
  	// Short circuit if the header's already in the cache, retrieve otherwise
  	if header, ok := hc.headerCache.Get(hash); ok {
  		return header.(*types.Header)
  	}
  	header := rawdb.ReadHeader(hc.chainDb, hash, number)
  	if header == nil {
  		return nil
  	}
  	// Cache the found header for next time and return
  	hc.headerCache.Add(hash, header)
  	return header
  }
docs: // GetHeader retrieves a block header from the database by hash and number,
  // caching it if found.