code: func NewCache(backend Reader, options ...CacheOption) *Cache {
  	cache := &Cache{
  		backend:  backend,
  		accounts: make(map[crypto.Address]*accountInfo),
  	}
  	for _, option := range options {
  		option(cache)
  	}
  	return cache
  }
docs: // Returns a Cache that wraps an underlying Reader to use on a cache miss, can write to an output Writer
  // via Sync. Goroutine safe for concurrent access.