// Path: junitperf-core/src/main/java/com/github/noconnor/junitperf/statistics/StatisticsCalculator.java
// public interface StatisticsCalculator {
// 
//   void addLatencyMeasurement(long executionTimeNs);
// 
//   void incrementErrorCount();
// 
//   void incrementEvaluationCount();
// 
//   long getErrorCount();
// 
//   long getEvaluationCount();
// 
//   float getLatencyPercentile(int percentile, TimeUnit unit);
// 
//   float getMaxLatency(TimeUnit unit);
// 
//   float getMinLatency(TimeUnit unit);
// 
//   float getMeanLatency(TimeUnit unit);
// 
//   float getErrorPercentage();
// 
//   void reset();
// 
// }


import static java.lang.System.nanoTime;
import static java.util.Objects.nonNull;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static java.util.concurrent.TimeUnit.NANOSECONDS;
import com.github.noconnor.junitperf.statistics.StatisticsCalculator;
import com.google.common.util.concurrent.RateLimiter;
import java.util.function.Supplier;
import lombok.Builder;
package com.github.noconnor.junitperf.statements;



final class EvaluationTask implements Runnable {

  private final TestStatement statement;
  private final RateLimiter rateLimiter;
  private final Supplier<Boolean> terminator;
// Path: junitperf-core/src/main/java/com/github/noconnor/junitperf/statistics/StatisticsCalculator.java
// public interface StatisticsCalculator {
// 
//   void addLatencyMeasurement(long executionTimeNs);
// 
//   void incrementErrorCount();
// 
//   void incrementEvaluationCount();
// 
//   long getErrorCount();
// 
//   long getEvaluationCount();
// 
//   float getLatencyPercentile(int percentile, TimeUnit unit);
// 
//   float getMaxLatency(TimeUnit unit);
// 
//   float getMinLatency(TimeUnit unit);
// 
//   float getMeanLatency(TimeUnit unit);
// 
//   float getErrorPercentage();
// 
//   void reset();
// 
// }


// Path: junitperf-core/src/main/java/com/github/noconnor/junitperf/statements/EvaluationTask.java
import static java.lang.System.nanoTime;
import static java.util.Objects.nonNull;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static java.util.concurrent.TimeUnit.NANOSECONDS;
import com.github.noconnor.junitperf.statistics.StatisticsCalculator;
import com.google.common.util.concurrent.RateLimiter;
import java.util.function.Supplier;
import lombok.Builder;

package com.github.noconnor.junitperf.statements;



final class EvaluationTask implements Runnable {

  private final TestStatement statement;
  private final RateLimiter rateLimiter;
  private final Supplier<Boolean> terminator;
  private final StatisticsCalculator stats;