public abstract interface class kotlinx/coroutines/test/DelayController {
	public abstract fun advanceTimeBy (J)J
	public abstract fun advanceUntilIdle ()J
	public abstract fun cleanupTestCoroutines ()V
	public abstract fun getCurrentTime ()J
	public abstract fun pauseDispatcher ()V
	public abstract fun pauseDispatcher (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
	public abstract fun resumeDispatcher ()V
	public abstract fun runCurrent ()V
}

public final class kotlinx/coroutines/test/TestBuildersKt {
	public static final fun runBlockingTest (Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;)V
	public static final fun runBlockingTest (Lkotlinx/coroutines/test/TestCoroutineDispatcher;Lkotlin/jvm/functions/Function2;)V
	public static final fun runBlockingTest (Lkotlinx/coroutines/test/TestCoroutineScope;Lkotlin/jvm/functions/Function2;)V
	public static synthetic fun runBlockingTest$default (Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)V
}

public final class kotlinx/coroutines/test/TestCoroutineDispatcher : kotlinx/coroutines/CoroutineDispatcher, kotlinx/coroutines/Delay, kotlinx/coroutines/test/DelayController {
	public fun <init> ()V
	public fun advanceTimeBy (J)J
	public fun advanceUntilIdle ()J
	public fun cleanupTestCoroutines ()V
	public fun delay (JLkotlin/coroutines/Continuation;)Ljava/lang/Object;
	public fun dispatch (Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V
	public fun dispatchYield (Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V
	public fun getCurrentTime ()J
	public fun invokeOnTimeout (JLjava/lang/Runnable;)Lkotlinx/coroutines/DisposableHandle;
	public fun pauseDispatcher ()V
	public fun pauseDispatcher (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
	public fun resumeDispatcher ()V
	public fun runCurrent ()V
	public fun scheduleResumeAfterDelay (JLkotlinx/coroutines/CancellableContinuation;)V
	public fun toString ()Ljava/lang/String;
}

public final class kotlinx/coroutines/test/TestCoroutineExceptionHandler : kotlin/coroutines/AbstractCoroutineContextElement, kotlinx/coroutines/CoroutineExceptionHandler, kotlinx/coroutines/test/UncaughtExceptionCaptor {
	public fun <init> ()V
	public fun cleanupTestCoroutines ()V
	public fun getUncaughtExceptions ()Ljava/util/List;
	public fun handleException (Lkotlin/coroutines/CoroutineContext;Ljava/lang/Throwable;)V
}

public abstract interface class kotlinx/coroutines/test/TestCoroutineScope : kotlinx/coroutines/CoroutineScope, kotlinx/coroutines/test/DelayController, kotlinx/coroutines/test/UncaughtExceptionCaptor {
	public abstract fun cleanupTestCoroutines ()V
}

public final class kotlinx/coroutines/test/TestCoroutineScopeKt {
	public static final fun TestCoroutineScope (Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/test/TestCoroutineScope;
	public static synthetic fun TestCoroutineScope$default (Lkotlin/coroutines/CoroutineContext;ILjava/lang/Object;)Lkotlinx/coroutines/test/TestCoroutineScope;
}

public final class kotlinx/coroutines/test/TestDispatchers {
	public static final fun resetMain (Lkotlinx/coroutines/Dispatchers;)V
	public static final fun setMain (Lkotlinx/coroutines/Dispatchers;Lkotlinx/coroutines/CoroutineDispatcher;)V
}

public abstract interface class kotlinx/coroutines/test/UncaughtExceptionCaptor {
	public abstract fun cleanupTestCoroutines ()V
	public abstract fun getUncaughtExceptions ()Ljava/util/List;
}

public final class kotlinx/coroutines/test/UncompletedCoroutinesError : java/lang/AssertionError {
	public fun <init> (Ljava/lang/String;Ljava/lang/Throwable;)V
	public synthetic fun <init> (Ljava/lang/String;Ljava/lang/Throwable;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
}

