public static <R> Supplier<R> monitor(Supplier<R> supplier, AtomicLong calls) {
        return new MonitoringSupplier<>(supplier, calls);
    }
public static < R > Supplier < R > monitor ( Supplier < R > supplier , AtomicLong calls ) { return new MonitoringSupplier < > ( supplier , calls ) ; }
Monitors calls to a supplier.

@param <R> the supplier result type
@param supplier the supplier that will be monitored
@param calls a value holder accumulating calls
@return the proxied supplier