code: func New(*Options) *Cache {
  	// Initialize the heap. The buffer of 1 is really important because
  	// its possible for the expiry loop to trigger the heap to update
  	// itself and it'd block forever otherwise.
  	h := &expiryHeap{NotifyCh: make(chan struct{}, 1)}
  	heap.Init(h)
  
  	c := &Cache{
  		types:             make(map[string]typeEntry),
  		entries:           make(map[string]cacheEntry),
  		entriesExpiryHeap: h,
  		stopCh:            make(chan struct{}),
  	}
  
  	// Start the expiry watcher
  	go c.runExpiryLoop()
  
  	return c
  }
docs: // New creates a new cache with the given RPC client and reasonable defaults.
  // Further settings can be tweaked on the returned value.