code: @SuppressWarnings("unchecked")
    public <T extends VALUE> T withCacheClear(Supplier<VALUE> cacheableOperation) {
  
      Assert.notNull(cacheableOperation, "Supplier is required");
  
      VALUE returnValue = cacheableOperation.get();
  
      clear(getLock());
  
      return (T) returnValue;
    }
docs: This caching data access operation invokes the supplied {@link Supplier cacheable operation} and then clears
  the contents of the entire {@link Cache}, but only if the {@link Supplier cacheable operation} completes
  successfully.
  
  @param <T> {@link Class type} of the return {@link VALUE value}.
  @param cacheableOperation {@link Supplier} used to compute or load a {@link VALUE value}.
  @return the {@link VALUE result} of the {@link Supplier cacheable operation}.
  @throws IllegalArgumentException if the {@link Supplier} is {@literal null}.
  @see java.util.function.Supplier
  @see #getCache()
  @see #getLock()