code: func getInstance(key lazycache.Key, reload bool) (*ContextHandle, error) {
  
  	once.Do(func() {
  		ctxCache = newCtxCache()
  		//anyway, loading first time, no need to reload
  		reload = false
  	})
  
  	if reload {
  		ctxCache.Delete(key)
  	}
  
  	ref, err := ctxCache.Get(key)
  	if err != nil {
  		return nil, errors.WithMessage(err, "failed to get pkcs11 ctx cache for given key")
  	}
  
  	return ref.(*ContextHandle), nil
  }
docs: //getInstance loads ContextHandle instance from cache
  //key - cache key
  //reload - if true then deletes the existing cache instance and recreates one