docs: @Override
  	public <T> T get(Object key, Resource resource, Provider<T> provider) {
  		if(resource == null) {
  			return provider.get();
  		}
  		CacheAdapter adapter = getOrCreate(resource);
  		T element = adapter.<T>internalGet(key);
  		if (element==null) {
  			element = provider.get();
  			cacheMiss(adapter);
  			adapter.set(key, element);
  		} else {
  			cacheHit(adapter);
  		}
  		if (element == CacheAdapter.NULL) {
  			return null;
  		}
  		return element;
  	}