code: func (cache *Cache) get(address crypto.Address) (*accountInfo, error) {
  	cache.RLock()
  	accInfo := cache.accounts[address]
  	cache.RUnlock()
  	if accInfo == nil {
  		cache.Lock()
  		defer cache.Unlock()
  		accInfo = cache.accounts[address]
  		if accInfo == nil {
  			account, err := cache.backend.GetAccount(address)
  			if err != nil {
  				return nil, err
  			}
  			accInfo = &accountInfo{
  				account: account,
  				storage: make(map[binary.Word256]binary.Word256),
  			}
  			cache.accounts[address] = accInfo
  		}
  	}
  	return accInfo, nil
  }
docs: // Get the cache accountInfo item creating it if necessary