// Signature format: 3.0
package androidx.benchmark.junit4 {

  public class AndroidBenchmarkRunner extends androidx.test.runner.AndroidJUnitRunner {
    ctor public AndroidBenchmarkRunner();
  }

  public final class BenchmarkRule implements org.junit.rules.TestRule {
    ctor public BenchmarkRule();
    method public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement base, org.junit.runner.Description description);
    method public androidx.benchmark.BenchmarkState getState();
  }

  public final class BenchmarkRule.Scope {
    method @kotlin.PublishedApi internal androidx.benchmark.BenchmarkState getOuterState();
    method public inline <T> T! runWithTimingDisabled(kotlin.jvm.functions.Function0<? extends T> block);
  }

  public final class BenchmarkRuleKt {
    method public static inline void measureRepeated(androidx.benchmark.junit4.BenchmarkRule, kotlin.jvm.functions.Function1<? super androidx.benchmark.junit4.BenchmarkRule.Scope,kotlin.Unit> block);
  }

}

