code: protected <R> R doExecuteCache( String metricName, Function<Cache<K, V>, R> operation )
      {
          Supplier<R> execution = executionFor( operation );
          if ( metricsManager != null )
          {
              return metricsManager.wrapWithStandardMetrics( execution, () -> getMetricName( metricName ) );
          }
  
          return execution.get();
      }
docs: TODO: Why is this separate from {@link BasicCacheHandle#execute(Function)}?