public abstract class kotlinx/coroutines/experimental/AbstractCoroutine : kotlin/coroutines/experimental/Continuation, kotlinx/coroutines/experimental/CoroutineScope, kotlinx/coroutines/experimental/Job {
	public fun <init> (Lkotlin/coroutines/experimental/CoroutineContext;Z)V
	public synthetic fun <init> (Lkotlin/coroutines/experimental/CoroutineContext;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
	public final fun getContext ()Lkotlin/coroutines/experimental/CoroutineContext;
	public fun getCoroutineContext ()Lkotlin/coroutines/experimental/CoroutineContext;
	public fun isActive ()Z
	protected fun onCancellation (Ljava/lang/Throwable;)V
	protected fun onCompleted (Ljava/lang/Object;)V
	protected fun onCompletedExceptionally (Ljava/lang/Throwable;)V
	protected fun onStart ()V
	public final fun resume (Ljava/lang/Object;)V
	public final fun resumeWithException (Ljava/lang/Throwable;)V
	public final fun start (Lkotlinx/coroutines/experimental/CoroutineStart;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V
	public final fun start (Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function1;)V
}

public final class kotlinx/coroutines/experimental/AwaitKt {
	public static final fun awaitAll (Ljava/util/Collection;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun awaitAll ([Lkotlinx/coroutines/experimental/Deferred;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun joinAll (Ljava/util/Collection;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun joinAll ([Lkotlinx/coroutines/experimental/Job;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
}

public final class kotlinx/coroutines/experimental/BuildersKt {
	public static final fun async (Lkotlinx/coroutines/experimental/CoroutineScope;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/Deferred;
	public static synthetic fun async$default (Lkotlinx/coroutines/experimental/CoroutineScope;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/Deferred;
	public static final fun launch (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/Job;
	public static final synthetic fun launch (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/Job;
	public static final fun launch (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlinx/coroutines/experimental/Job;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/Job;
	public static final synthetic fun launch (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlinx/coroutines/experimental/Job;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/Job;
	public static final fun launch (Lkotlin/coroutines/experimental/CoroutineContext;ZLkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/Job;
	public static final fun launch (Lkotlinx/coroutines/experimental/CoroutineScope;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/Job;
	public static final fun launch (Lkotlinx/coroutines/experimental/CoroutineScope;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/Job;
	public static synthetic fun launch$default (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/Job;
	public static synthetic fun launch$default (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/Job;
	public static synthetic fun launch$default (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlinx/coroutines/experimental/Job;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/Job;
	public static synthetic fun launch$default (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlinx/coroutines/experimental/Job;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/Job;
	public static synthetic fun launch$default (Lkotlinx/coroutines/experimental/CoroutineScope;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/Job;
	public static synthetic fun launch$default (Lkotlinx/coroutines/experimental/CoroutineScope;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/Job;
	public static final synthetic fun run (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun run (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static synthetic fun run$default (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
	public static final fun runBlocking (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
	public static synthetic fun runBlocking$default (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Ljava/lang/Object;
	public static final fun withContext (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final synthetic fun withContext (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun withContext (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static synthetic fun withContext$default (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
	public static synthetic fun withContext$default (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
}

public abstract interface class kotlinx/coroutines/experimental/CancellableContinuation : kotlin/coroutines/experimental/Continuation {
	public abstract fun cancel (Ljava/lang/Throwable;)Z
	public abstract fun completeResume (Ljava/lang/Object;)V
	public abstract fun initCancellability ()V
	public abstract fun invokeOnCancellation (Lkotlin/jvm/functions/Function1;)V
	public abstract fun invokeOnCompletion (ZZLkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public abstract fun isActive ()Z
	public abstract fun isCancelled ()Z
	public abstract fun isCompleted ()Z
	public abstract fun resumeUndispatched (Lkotlinx/coroutines/experimental/CoroutineDispatcher;Ljava/lang/Object;)V
	public abstract fun resumeUndispatchedWithException (Lkotlinx/coroutines/experimental/CoroutineDispatcher;Ljava/lang/Throwable;)V
	public abstract fun tryResume (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
	public abstract fun tryResumeWithException (Ljava/lang/Throwable;)Ljava/lang/Object;
}

public final class kotlinx/coroutines/experimental/CancellableContinuation$DefaultImpls {
	public static synthetic fun cancel$default (Lkotlinx/coroutines/experimental/CancellableContinuation;Ljava/lang/Throwable;ILjava/lang/Object;)Z
	public static synthetic fun invokeOnCompletion$default (Lkotlinx/coroutines/experimental/CancellableContinuation;ZZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public static synthetic fun tryResume$default (Lkotlinx/coroutines/experimental/CancellableContinuation;Ljava/lang/Object;Ljava/lang/Object;ILjava/lang/Object;)Ljava/lang/Object;
}

public final class kotlinx/coroutines/experimental/CancellableContinuationImpl : java/lang/Runnable, kotlinx/coroutines/experimental/CancellableContinuation {
	public fun <init> (Lkotlin/coroutines/experimental/Continuation;I)V
	public fun completeResume (Ljava/lang/Object;)V
	public fun getContext ()Lkotlin/coroutines/experimental/CoroutineContext;
	public fun getSuccessfulResult (Ljava/lang/Object;)Ljava/lang/Object;
	public fun initCancellability ()V
	public fun invokeOnCompletion (ZZLkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public fun resumeUndispatched (Lkotlinx/coroutines/experimental/CoroutineDispatcher;Ljava/lang/Object;)V
	public fun resumeUndispatchedWithException (Lkotlinx/coroutines/experimental/CoroutineDispatcher;Ljava/lang/Throwable;)V
	public fun tryResume (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
	public fun tryResumeWithException (Ljava/lang/Throwable;)Ljava/lang/Object;
}

public final class kotlinx/coroutines/experimental/CancellableContinuationKt {
	public static final fun disposeOnCancellation (Lkotlinx/coroutines/experimental/CancellableContinuation;Lkotlinx/coroutines/experimental/DisposableHandle;)V
	public static final fun disposeOnCompletion (Lkotlinx/coroutines/experimental/CancellableContinuation;Lkotlinx/coroutines/experimental/DisposableHandle;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public static final fun removeOnCancel (Lkotlinx/coroutines/experimental/CancellableContinuation;Lkotlinx/coroutines/experimental/internal/LockFreeLinkedListNode;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public static final fun removeOnCancellation (Lkotlinx/coroutines/experimental/CancellableContinuation;Lkotlinx/coroutines/experimental/internal/LockFreeLinkedListNode;)V
}

public final class kotlinx/coroutines/experimental/CancelledContinuation : kotlinx/coroutines/experimental/CompletedExceptionally {
	public fun <init> (Lkotlin/coroutines/experimental/Continuation;Ljava/lang/Throwable;)V
}

public abstract class kotlinx/coroutines/experimental/CloseableCoroutineDispatcher : kotlinx/coroutines/experimental/CoroutineDispatcher, java/io/Closeable {
	public fun <init> ()V
}

public final class kotlinx/coroutines/experimental/CommonPool : kotlinx/coroutines/experimental/ExecutorCoroutineDispatcher {
	public static final field DEFAULT_PARALLELISM_PROPERTY_NAME Ljava/lang/String;
	public static final field INSTANCE Lkotlinx/coroutines/experimental/CommonPool;
	public fun close ()V
	public fun dispatch (Lkotlin/coroutines/experimental/CoroutineContext;Ljava/lang/Runnable;)V
	public fun getExecutor ()Ljava/util/concurrent/Executor;
	public fun toString ()Ljava/lang/String;
}

public abstract interface class kotlinx/coroutines/experimental/CompletableDeferred : kotlinx/coroutines/experimental/Deferred {
	public abstract fun complete (Ljava/lang/Object;)Z
	public abstract fun completeExceptionally (Ljava/lang/Throwable;)Z
}

public final class kotlinx/coroutines/experimental/CompletableDeferred$DefaultImpls {
	public static fun fold (Lkotlinx/coroutines/experimental/CompletableDeferred;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
	public static fun get (Lkotlinx/coroutines/experimental/CompletableDeferred;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element;
	public static fun getCompletionException (Lkotlinx/coroutines/experimental/CompletableDeferred;)Ljava/lang/Throwable;
	public static fun isComputing (Lkotlinx/coroutines/experimental/CompletableDeferred;)Z
	public static fun minusKey (Lkotlinx/coroutines/experimental/CompletableDeferred;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext;
	public static fun plus (Lkotlinx/coroutines/experimental/CompletableDeferred;Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext;
	public static fun plus (Lkotlinx/coroutines/experimental/CompletableDeferred;Lkotlinx/coroutines/experimental/Job;)Lkotlinx/coroutines/experimental/Job;
}

public final class kotlinx/coroutines/experimental/CompletableDeferredKt {
	public static final synthetic fun CompletableDeferred ()Lkotlinx/coroutines/experimental/CompletableDeferred;
	public static final fun CompletableDeferred (Ljava/lang/Object;)Lkotlinx/coroutines/experimental/CompletableDeferred;
	public static final fun CompletableDeferred (Lkotlinx/coroutines/experimental/Job;)Lkotlinx/coroutines/experimental/CompletableDeferred;
	public static synthetic fun CompletableDeferred$default (Lkotlinx/coroutines/experimental/Job;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/CompletableDeferred;
}

public class kotlinx/coroutines/experimental/CompletedExceptionally {
	public final field cause Ljava/lang/Throwable;
	public fun <init> (Ljava/lang/Throwable;)V
	public fun toString ()Ljava/lang/String;
}

public final class kotlinx/coroutines/experimental/CompletionHandlerException : java/lang/RuntimeException {
	public fun <init> (Ljava/lang/String;Ljava/lang/Throwable;)V
}

public final class kotlinx/coroutines/experimental/CoroutineContextKt {
	public static final fun getDefaultDispatcher ()Lkotlinx/coroutines/experimental/CoroutineDispatcher;
	public static final fun getIO ()Lkotlinx/coroutines/experimental/CoroutineDispatcher;
	public static final fun newCoroutineContext (Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext;
	public static final fun newCoroutineContext (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/Job;)Lkotlin/coroutines/experimental/CoroutineContext;
	public static final fun newCoroutineContext (Lkotlinx/coroutines/experimental/CoroutineScope;Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext;
	public static synthetic fun newCoroutineContext$default (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/Job;ILjava/lang/Object;)Lkotlin/coroutines/experimental/CoroutineContext;
}

public abstract class kotlinx/coroutines/experimental/CoroutineDispatcher : kotlin/coroutines/experimental/AbstractCoroutineContextElement, kotlin/coroutines/experimental/ContinuationInterceptor {
	public fun <init> ()V
	public abstract fun dispatch (Lkotlin/coroutines/experimental/CoroutineContext;Ljava/lang/Runnable;)V
	public fun dispatchYield (Lkotlin/coroutines/experimental/CoroutineContext;Ljava/lang/Runnable;)V
	public final fun interceptContinuation (Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/experimental/Continuation;
	public fun isDispatchNeeded (Lkotlin/coroutines/experimental/CoroutineContext;)Z
	public final fun plus (Lkotlinx/coroutines/experimental/CoroutineDispatcher;)Lkotlinx/coroutines/experimental/CoroutineDispatcher;
	public fun toString ()Ljava/lang/String;
}

public abstract interface class kotlinx/coroutines/experimental/CoroutineExceptionHandler : kotlin/coroutines/experimental/CoroutineContext$Element {
	public static final field Key Lkotlinx/coroutines/experimental/CoroutineExceptionHandler$Key;
	public abstract fun handleException (Lkotlin/coroutines/experimental/CoroutineContext;Ljava/lang/Throwable;)V
}

public final class kotlinx/coroutines/experimental/CoroutineExceptionHandler$DefaultImpls {
	public static fun fold (Lkotlinx/coroutines/experimental/CoroutineExceptionHandler;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
	public static fun get (Lkotlinx/coroutines/experimental/CoroutineExceptionHandler;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element;
	public static fun minusKey (Lkotlinx/coroutines/experimental/CoroutineExceptionHandler;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext;
	public static fun plus (Lkotlinx/coroutines/experimental/CoroutineExceptionHandler;Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext;
}

public final class kotlinx/coroutines/experimental/CoroutineExceptionHandler$Key : kotlin/coroutines/experimental/CoroutineContext$Key {
}

public final class kotlinx/coroutines/experimental/CoroutineExceptionHandlerKt {
	public static final fun CoroutineExceptionHandler (Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/CoroutineExceptionHandler;
	public static final fun handleCoroutineException (Lkotlin/coroutines/experimental/CoroutineContext;Ljava/lang/Throwable;)V
	public static final fun handleCoroutineException (Lkotlin/coroutines/experimental/CoroutineContext;Ljava/lang/Throwable;Lkotlinx/coroutines/experimental/Job;)V
	public static synthetic fun handleCoroutineException$default (Lkotlin/coroutines/experimental/CoroutineContext;Ljava/lang/Throwable;Lkotlinx/coroutines/experimental/Job;ILjava/lang/Object;)V
}

public final class kotlinx/coroutines/experimental/CoroutineName : kotlin/coroutines/experimental/AbstractCoroutineContextElement {
	public static final field Key Lkotlinx/coroutines/experimental/CoroutineName$Key;
	public fun <init> (Ljava/lang/String;)V
	public final fun component1 ()Ljava/lang/String;
	public final fun copy (Ljava/lang/String;)Lkotlinx/coroutines/experimental/CoroutineName;
	public static synthetic fun copy$default (Lkotlinx/coroutines/experimental/CoroutineName;Ljava/lang/String;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/CoroutineName;
	public fun equals (Ljava/lang/Object;)Z
	public final fun getName ()Ljava/lang/String;
	public fun hashCode ()I
	public fun toString ()Ljava/lang/String;
}

public final class kotlinx/coroutines/experimental/CoroutineName$Key : kotlin/coroutines/experimental/CoroutineContext$Key {
}

public abstract interface class kotlinx/coroutines/experimental/CoroutineScope {
	public abstract fun getCoroutineContext ()Lkotlin/coroutines/experimental/CoroutineContext;
	public abstract synthetic fun isActive ()Z
}

public final class kotlinx/coroutines/experimental/CoroutineScope$DefaultImpls {
	public static synthetic fun isActive (Lkotlinx/coroutines/experimental/CoroutineScope;)Z
}

public final class kotlinx/coroutines/experimental/CoroutineScopeKt {
	public static final fun CoroutineScope (Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlinx/coroutines/experimental/CoroutineScope;
	public static final fun coroutineScope (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun currentScope (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun isActive (Lkotlinx/coroutines/experimental/CoroutineScope;)Z
	public static final fun plus (Lkotlinx/coroutines/experimental/CoroutineScope;Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlinx/coroutines/experimental/CoroutineScope;
}

public final class kotlinx/coroutines/experimental/CoroutineStart : java/lang/Enum {
	public static final field ATOMIC Lkotlinx/coroutines/experimental/CoroutineStart;
	public static final field DEFAULT Lkotlinx/coroutines/experimental/CoroutineStart;
	public static final field LAZY Lkotlinx/coroutines/experimental/CoroutineStart;
	public static final field UNDISPATCHED Lkotlinx/coroutines/experimental/CoroutineStart;
	public final fun invoke (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)V
	public final fun invoke (Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;)V
	public final fun isLazy ()Z
	public static fun valueOf (Ljava/lang/String;)Lkotlinx/coroutines/experimental/CoroutineStart;
	public static fun values ()[Lkotlinx/coroutines/experimental/CoroutineStart;
}

public final class kotlinx/coroutines/experimental/DebugKt {
	public static final field DEBUG_PROPERTY_NAME Ljava/lang/String;
	public static final field DEBUG_PROPERTY_VALUE_AUTO Ljava/lang/String;
	public static final field DEBUG_PROPERTY_VALUE_OFF Ljava/lang/String;
	public static final field DEBUG_PROPERTY_VALUE_ON Ljava/lang/String;
}

public abstract interface class kotlinx/coroutines/experimental/Deferred : kotlinx/coroutines/experimental/Job {
	public abstract fun await (Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public abstract fun getCompleted ()Ljava/lang/Object;
	public abstract fun getCompletionExceptionOrNull ()Ljava/lang/Throwable;
	public abstract fun getOnAwait ()Lkotlinx/coroutines/experimental/selects/SelectClause1;
	public abstract fun isCompletedExceptionally ()Z
	public abstract fun isComputing ()Z
}

public final class kotlinx/coroutines/experimental/Deferred$DefaultImpls {
	public static fun fold (Lkotlinx/coroutines/experimental/Deferred;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
	public static fun get (Lkotlinx/coroutines/experimental/Deferred;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element;
	public static fun getCompletionException (Lkotlinx/coroutines/experimental/Deferred;)Ljava/lang/Throwable;
	public static fun isComputing (Lkotlinx/coroutines/experimental/Deferred;)Z
	public static fun minusKey (Lkotlinx/coroutines/experimental/Deferred;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext;
	public static fun plus (Lkotlinx/coroutines/experimental/Deferred;Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext;
	public static fun plus (Lkotlinx/coroutines/experimental/Deferred;Lkotlinx/coroutines/experimental/Job;)Lkotlinx/coroutines/experimental/Job;
}

public final class kotlinx/coroutines/experimental/DeferredKt {
	public static final fun async (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/Deferred;
	public static final synthetic fun async (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/Deferred;
	public static final fun async (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlinx/coroutines/experimental/Job;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/Deferred;
	public static final synthetic fun async (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlinx/coroutines/experimental/Job;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/Deferred;
	public static final fun async (Lkotlin/coroutines/experimental/CoroutineContext;ZLkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/Deferred;
	public static final fun async (Lkotlinx/coroutines/experimental/CoroutineScope;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/Deferred;
	public static synthetic fun async$default (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/Deferred;
	public static synthetic fun async$default (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/Deferred;
	public static synthetic fun async$default (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlinx/coroutines/experimental/Job;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/Deferred;
	public static synthetic fun async$default (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlinx/coroutines/experimental/Job;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/Deferred;
	public static synthetic fun async$default (Lkotlinx/coroutines/experimental/CoroutineScope;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/Deferred;
	public static final fun defer (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/Deferred;
}

public abstract interface class kotlinx/coroutines/experimental/Delay {
	public abstract synthetic fun delay (JLjava/util/concurrent/TimeUnit;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public abstract fun delay (JLkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public abstract fun invokeOnTimeout (JLjava/lang/Runnable;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public abstract synthetic fun invokeOnTimeout (JLjava/util/concurrent/TimeUnit;Ljava/lang/Runnable;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public abstract synthetic fun scheduleResumeAfterDelay (JLjava/util/concurrent/TimeUnit;Lkotlinx/coroutines/experimental/CancellableContinuation;)V
	public abstract fun scheduleResumeAfterDelay (JLkotlinx/coroutines/experimental/CancellableContinuation;)V
}

public final class kotlinx/coroutines/experimental/Delay$DefaultImpls {
	public static synthetic fun delay (Lkotlinx/coroutines/experimental/Delay;JLjava/util/concurrent/TimeUnit;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static fun delay (Lkotlinx/coroutines/experimental/Delay;JLkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static synthetic fun delay$default (Lkotlinx/coroutines/experimental/Delay;JLjava/util/concurrent/TimeUnit;Lkotlin/coroutines/experimental/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
	public static fun invokeOnTimeout (Lkotlinx/coroutines/experimental/Delay;JLjava/lang/Runnable;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public static synthetic fun invokeOnTimeout (Lkotlinx/coroutines/experimental/Delay;JLjava/util/concurrent/TimeUnit;Ljava/lang/Runnable;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public static synthetic fun scheduleResumeAfterDelay (Lkotlinx/coroutines/experimental/Delay;JLjava/util/concurrent/TimeUnit;Lkotlinx/coroutines/experimental/CancellableContinuation;)V
}

public final class kotlinx/coroutines/experimental/DelayKt {
	public static final synthetic fun delay (ILkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun delay (JLjava/util/concurrent/TimeUnit;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun delay (JLkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static synthetic fun delay$default (JLjava/util/concurrent/TimeUnit;Lkotlin/coroutines/experimental/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
}

public final class kotlinx/coroutines/experimental/DispatchedKt {
	public static final fun dispatch (Lkotlinx/coroutines/experimental/DispatchedTask;I)V
	public static synthetic fun dispatch$default (Lkotlinx/coroutines/experimental/DispatchedTask;IILjava/lang/Object;)V
}

public abstract interface class kotlinx/coroutines/experimental/DispatchedTask : java/lang/Runnable {
	public abstract fun getDelegate ()Lkotlin/coroutines/experimental/Continuation;
	public abstract fun getExceptionalResult (Ljava/lang/Object;)Ljava/lang/Throwable;
	public abstract fun getResumeMode ()I
	public abstract fun getSuccessfulResult (Ljava/lang/Object;)Ljava/lang/Object;
	public abstract fun run ()V
	public abstract fun takeState ()Ljava/lang/Object;
}

public final class kotlinx/coroutines/experimental/DispatchedTask$DefaultImpls {
	public static fun getExceptionalResult (Lkotlinx/coroutines/experimental/DispatchedTask;Ljava/lang/Object;)Ljava/lang/Throwable;
	public static fun getResumeMode (Lkotlinx/coroutines/experimental/DispatchedTask;)I
	public static fun getSuccessfulResult (Lkotlinx/coroutines/experimental/DispatchedTask;Ljava/lang/Object;)Ljava/lang/Object;
	public static fun run (Lkotlinx/coroutines/experimental/DispatchedTask;)V
}

public final class kotlinx/coroutines/experimental/Dispatchers {
	public static final field Default Lkotlinx/coroutines/experimental/CoroutineDispatcher;
	public static final field INSTANCE Lkotlinx/coroutines/experimental/Dispatchers;
	public static final field Unconfined Lkotlinx/coroutines/experimental/CoroutineDispatcher;
}

public final class kotlinx/coroutines/experimental/DispatchersKt {
	public static final field IO_PARALLELISM_PROPERTY_NAME Ljava/lang/String;
	public static final fun getIO (Lkotlinx/coroutines/experimental/Dispatchers;)Lkotlinx/coroutines/experimental/CoroutineDispatcher;
}

public abstract interface class kotlinx/coroutines/experimental/DisposableHandle {
	public abstract fun dispose ()V
}

public abstract interface class kotlinx/coroutines/experimental/EventLoop : kotlin/coroutines/experimental/ContinuationInterceptor {
	public static final field Factory Lkotlinx/coroutines/experimental/EventLoop$Factory;
	public abstract fun processNextEvent ()J
}

public final class kotlinx/coroutines/experimental/EventLoop$DefaultImpls {
	public static fun fold (Lkotlinx/coroutines/experimental/EventLoop;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
	public static fun get (Lkotlinx/coroutines/experimental/EventLoop;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element;
	public static fun minusKey (Lkotlinx/coroutines/experimental/EventLoop;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext;
	public static fun plus (Lkotlinx/coroutines/experimental/EventLoop;Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext;
}

public final class kotlinx/coroutines/experimental/EventLoop$Factory {
	public final synthetic fun invoke (Ljava/lang/Thread;Lkotlinx/coroutines/experimental/Job;)Lkotlinx/coroutines/experimental/CoroutineDispatcher;
	public static synthetic fun invoke$default (Lkotlinx/coroutines/experimental/EventLoop$Factory;Ljava/lang/Thread;Lkotlinx/coroutines/experimental/Job;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/CoroutineDispatcher;
}

public final class kotlinx/coroutines/experimental/EventLoopKt {
	public static final synthetic fun EventLoop (Ljava/lang/Thread;Lkotlinx/coroutines/experimental/Job;)Lkotlinx/coroutines/experimental/CoroutineDispatcher;
	public static final fun EventLoop (Ljava/lang/Thread;Lkotlinx/coroutines/experimental/Job;)Lkotlinx/coroutines/experimental/EventLoop;
	public static synthetic fun EventLoop$default (Ljava/lang/Thread;Lkotlinx/coroutines/experimental/Job;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/CoroutineDispatcher;
	public static synthetic fun EventLoop$default (Ljava/lang/Thread;Lkotlinx/coroutines/experimental/Job;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/EventLoop;
}

public abstract class kotlinx/coroutines/experimental/ExecutorCoroutineDispatcher : kotlinx/coroutines/experimental/CloseableCoroutineDispatcher, java/io/Closeable {
	public fun <init> ()V
	public abstract fun close ()V
	public abstract fun getExecutor ()Ljava/util/concurrent/Executor;
}

public abstract class kotlinx/coroutines/experimental/ExecutorCoroutineDispatcherBase : kotlinx/coroutines/experimental/ExecutorCoroutineDispatcher, kotlinx/coroutines/experimental/Delay {
	public fun <init> ()V
	public fun close ()V
	public synthetic fun delay (JLjava/util/concurrent/TimeUnit;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public fun delay (JLkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public fun dispatch (Lkotlin/coroutines/experimental/CoroutineContext;Ljava/lang/Runnable;)V
	public fun equals (Ljava/lang/Object;)Z
	public fun hashCode ()I
	public fun invokeOnTimeout (JLjava/lang/Runnable;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public synthetic fun invokeOnTimeout (JLjava/util/concurrent/TimeUnit;Ljava/lang/Runnable;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public synthetic fun scheduleResumeAfterDelay (JLjava/util/concurrent/TimeUnit;Lkotlinx/coroutines/experimental/CancellableContinuation;)V
	public fun scheduleResumeAfterDelay (JLkotlinx/coroutines/experimental/CancellableContinuation;)V
	public fun toString ()Ljava/lang/String;
}

public final class kotlinx/coroutines/experimental/ExecutorsKt {
	public static final synthetic fun asCoroutineDispatcher (Ljava/util/concurrent/ExecutorService;)Lkotlinx/coroutines/experimental/CloseableCoroutineDispatcher;
	public static final fun asCoroutineDispatcher (Ljava/util/concurrent/ExecutorService;)Lkotlinx/coroutines/experimental/ExecutorCoroutineDispatcher;
	public static final fun from (Ljava/util/concurrent/Executor;)Lkotlinx/coroutines/experimental/CoroutineDispatcher;
	public static final fun toCoroutineDispatcher (Ljava/util/concurrent/Executor;)Lkotlinx/coroutines/experimental/CoroutineDispatcher;
}

public abstract interface annotation class kotlinx/coroutines/experimental/ExperimentalCoroutinesApi : java/lang/annotation/Annotation {
}

public final class kotlinx/coroutines/experimental/GlobalScope : kotlinx/coroutines/experimental/CoroutineScope {
	public static final field INSTANCE Lkotlinx/coroutines/experimental/GlobalScope;
	public fun getCoroutineContext ()Lkotlin/coroutines/experimental/CoroutineContext;
	public synthetic fun isActive ()Z
}

public abstract interface annotation class kotlinx/coroutines/experimental/InternalCoroutinesApi : java/lang/annotation/Annotation {
}

public abstract interface class kotlinx/coroutines/experimental/Job : kotlin/coroutines/experimental/CoroutineContext$Element {
	public static final field Key Lkotlinx/coroutines/experimental/Job$Key;
	public abstract fun attachChild (Lkotlinx/coroutines/experimental/Job;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public abstract fun cancel ()Z
	public abstract fun cancel (Ljava/lang/Throwable;)Z
	public abstract synthetic fun cancelChildren (Ljava/lang/Throwable;)V
	public abstract fun getCancellationException ()Ljava/util/concurrent/CancellationException;
	public abstract fun getChildren ()Lkotlin/sequences/Sequence;
	public abstract fun getCompletionException ()Ljava/lang/Throwable;
	public abstract fun getOnJoin ()Lkotlinx/coroutines/experimental/selects/SelectClause0;
	public abstract fun invokeOnCompletion (Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public abstract synthetic fun invokeOnCompletion (Lkotlin/jvm/functions/Function1;Z)Lkotlinx/coroutines/experimental/DisposableHandle;
	public abstract fun invokeOnCompletion (ZLkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public abstract fun invokeOnCompletion (ZZLkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public abstract fun isActive ()Z
	public abstract fun isCancelled ()Z
	public abstract fun isCompleted ()Z
	public abstract fun join (Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public abstract fun plus (Lkotlinx/coroutines/experimental/Job;)Lkotlinx/coroutines/experimental/Job;
	public abstract fun start ()Z
}

public final class kotlinx/coroutines/experimental/Job$DefaultImpls {
	public static synthetic fun cancel$default (Lkotlinx/coroutines/experimental/Job;Ljava/lang/Throwable;ILjava/lang/Object;)Z
	public static synthetic fun cancelChildren$default (Lkotlinx/coroutines/experimental/Job;Ljava/lang/Throwable;ILjava/lang/Object;)V
	public static fun fold (Lkotlinx/coroutines/experimental/Job;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
	public static fun get (Lkotlinx/coroutines/experimental/Job;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element;
	public static fun getCompletionException (Lkotlinx/coroutines/experimental/Job;)Ljava/lang/Throwable;
	public static synthetic fun invokeOnCompletion$default (Lkotlinx/coroutines/experimental/Job;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public static synthetic fun invokeOnCompletion$default (Lkotlinx/coroutines/experimental/Job;ZZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public static fun minusKey (Lkotlinx/coroutines/experimental/Job;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext;
	public static fun plus (Lkotlinx/coroutines/experimental/Job;Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext;
	public static fun plus (Lkotlinx/coroutines/experimental/Job;Lkotlinx/coroutines/experimental/Job;)Lkotlinx/coroutines/experimental/Job;
}

public final class kotlinx/coroutines/experimental/Job$Key : kotlin/coroutines/experimental/CoroutineContext$Key {
	public final synthetic fun invoke (Lkotlinx/coroutines/experimental/Job;)Lkotlinx/coroutines/experimental/Job;
	public static synthetic fun invoke$default (Lkotlinx/coroutines/experimental/Job$Key;Lkotlinx/coroutines/experimental/Job;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/Job;
}

public final class kotlinx/coroutines/experimental/JobCancellationException : java/util/concurrent/CancellationException {
	public fun <init> (Ljava/lang/String;Ljava/lang/Throwable;Lkotlinx/coroutines/experimental/Job;)V
	public fun equals (Ljava/lang/Object;)Z
	public fun fillInStackTrace ()Ljava/lang/Throwable;
	public fun hashCode ()I
	public fun toString ()Ljava/lang/String;
}

public final class kotlinx/coroutines/experimental/JobKt {
	public static final fun DisposableHandle (Lkotlin/jvm/functions/Function0;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public static final fun Job (Lkotlinx/coroutines/experimental/Job;)Lkotlinx/coroutines/experimental/Job;
	public static synthetic fun Job$default (Lkotlinx/coroutines/experimental/Job;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/Job;
	public static final fun cancel (Lkotlin/coroutines/experimental/CoroutineContext;)Z
	public static final fun cancel (Lkotlin/coroutines/experimental/CoroutineContext;Ljava/lang/Throwable;)Z
	public static synthetic fun cancel$default (Lkotlin/coroutines/experimental/CoroutineContext;Ljava/lang/Throwable;ILjava/lang/Object;)Z
	public static final fun cancelAndJoin (Lkotlinx/coroutines/experimental/Job;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun cancelChildren (Lkotlin/coroutines/experimental/CoroutineContext;)V
	public static final fun cancelChildren (Lkotlin/coroutines/experimental/CoroutineContext;Ljava/lang/Throwable;)V
	public static final fun cancelChildren (Lkotlinx/coroutines/experimental/Job;Ljava/lang/Throwable;)V
	public static synthetic fun cancelChildren$default (Lkotlin/coroutines/experimental/CoroutineContext;Ljava/lang/Throwable;ILjava/lang/Object;)V
	public static synthetic fun cancelChildren$default (Lkotlinx/coroutines/experimental/Job;Ljava/lang/Throwable;ILjava/lang/Object;)V
	public static final fun cancelFutureOnCancellation (Lkotlinx/coroutines/experimental/CancellableContinuation;Ljava/util/concurrent/Future;)V
	public static final fun cancelFutureOnCompletion (Lkotlinx/coroutines/experimental/CancellableContinuation;Ljava/util/concurrent/Future;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public static final fun cancelFutureOnCompletion (Lkotlinx/coroutines/experimental/Job;Ljava/util/concurrent/Future;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public static final fun disposeOnCompletion (Lkotlinx/coroutines/experimental/Job;Lkotlinx/coroutines/experimental/DisposableHandle;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public static final fun isActive (Lkotlin/coroutines/experimental/CoroutineContext;)Z
	public static final fun join (Lkotlinx/coroutines/experimental/Job;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun joinChildren (Lkotlinx/coroutines/experimental/Job;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun unregisterOnCompletion (Lkotlinx/coroutines/experimental/Job;Lkotlinx/coroutines/experimental/DisposableHandle;)Lkotlinx/coroutines/experimental/DisposableHandle;
}

public final class kotlinx/coroutines/experimental/LazyDeferredKt {
	public static final fun lazyDefer (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/Deferred;
}

public final class kotlinx/coroutines/experimental/NonCancellable : kotlin/coroutines/experimental/AbstractCoroutineContextElement, kotlinx/coroutines/experimental/Job {
	public static final field INSTANCE Lkotlinx/coroutines/experimental/NonCancellable;
	public fun attachChild (Lkotlinx/coroutines/experimental/Job;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public fun cancel ()Z
	public fun cancel (Ljava/lang/Throwable;)Z
	public synthetic fun cancelChildren (Ljava/lang/Throwable;)V
	public fun getCancellationException ()Ljava/util/concurrent/CancellationException;
	public fun getChildren ()Lkotlin/sequences/Sequence;
	public fun getCompletionException ()Ljava/lang/Throwable;
	public fun getOnJoin ()Lkotlinx/coroutines/experimental/selects/SelectClause0;
	public fun invokeOnCompletion (Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public synthetic fun invokeOnCompletion (Lkotlin/jvm/functions/Function1;Z)Lkotlinx/coroutines/experimental/DisposableHandle;
	public fun invokeOnCompletion (ZLkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public fun invokeOnCompletion (ZZLkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/experimental/DisposableHandle;
	public fun isActive ()Z
	public fun isCancelled ()Z
	public fun isCompleted ()Z
	public fun join (Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public fun plus (Lkotlinx/coroutines/experimental/Job;)Lkotlinx/coroutines/experimental/Job;
	public fun start ()Z
}

public final class kotlinx/coroutines/experimental/NonDisposableHandle : kotlinx/coroutines/experimental/DisposableHandle {
	public static final field INSTANCE Lkotlinx/coroutines/experimental/NonDisposableHandle;
	public fun dispose ()V
	public fun toString ()Ljava/lang/String;
}

public abstract interface annotation class kotlinx/coroutines/experimental/ObsoleteCoroutinesApi : java/lang/annotation/Annotation {
}

public final class kotlinx/coroutines/experimental/RunnableKt {
	public static final fun Runnable (Lkotlin/jvm/functions/Function0;)Ljava/lang/Runnable;
}

public final class kotlinx/coroutines/experimental/ScheduledKt {
	public static final synthetic fun withTimeout (ILkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun withTimeout (JLjava/util/concurrent/TimeUnit;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static synthetic fun withTimeout$default (JLjava/util/concurrent/TimeUnit;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
	public static final synthetic fun withTimeoutOrNull (ILkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun withTimeoutOrNull (JLjava/util/concurrent/TimeUnit;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static synthetic fun withTimeoutOrNull$default (JLjava/util/concurrent/TimeUnit;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
}

public abstract interface class kotlinx/coroutines/experimental/ThreadContextElement : kotlin/coroutines/experimental/CoroutineContext$Element {
	public abstract fun restoreThreadContext (Lkotlin/coroutines/experimental/CoroutineContext;Ljava/lang/Object;)V
	public abstract fun updateThreadContext (Lkotlin/coroutines/experimental/CoroutineContext;)Ljava/lang/Object;
}

public final class kotlinx/coroutines/experimental/ThreadContextElement$DefaultImpls {
	public static fun fold (Lkotlinx/coroutines/experimental/ThreadContextElement;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
	public static fun get (Lkotlinx/coroutines/experimental/ThreadContextElement;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element;
	public static fun minusKey (Lkotlinx/coroutines/experimental/ThreadContextElement;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext;
	public static fun plus (Lkotlinx/coroutines/experimental/ThreadContextElement;Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext;
}

public final class kotlinx/coroutines/experimental/ThreadContextElementKt {
	public static final fun asContextElement (Ljava/lang/ThreadLocal;Ljava/lang/Object;)Lkotlinx/coroutines/experimental/ThreadContextElement;
	public static synthetic fun asContextElement$default (Ljava/lang/ThreadLocal;Ljava/lang/Object;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/ThreadContextElement;
}

public final class kotlinx/coroutines/experimental/ThreadPoolDispatcher : kotlinx/coroutines/experimental/ExecutorCoroutineDispatcherBase {
	public fun close ()V
	public fun getExecutor ()Ljava/util/concurrent/Executor;
	public fun toString ()Ljava/lang/String;
}

public final class kotlinx/coroutines/experimental/ThreadPoolDispatcherKt {
	public static final fun newFixedThreadPoolContext (ILjava/lang/String;)Lkotlinx/coroutines/experimental/ExecutorCoroutineDispatcher;
	public static final synthetic fun newFixedThreadPoolContext (ILjava/lang/String;)Lkotlinx/coroutines/experimental/ThreadPoolDispatcher;
	public static final fun newFixedThreadPoolContext (ILjava/lang/String;Lkotlinx/coroutines/experimental/Job;)Lkotlin/coroutines/experimental/CoroutineContext;
	public static synthetic fun newFixedThreadPoolContext$default (ILjava/lang/String;Lkotlinx/coroutines/experimental/Job;ILjava/lang/Object;)Lkotlin/coroutines/experimental/CoroutineContext;
	public static final fun newSingleThreadContext (Ljava/lang/String;)Lkotlinx/coroutines/experimental/ExecutorCoroutineDispatcher;
	public static final synthetic fun newSingleThreadContext (Ljava/lang/String;)Lkotlinx/coroutines/experimental/ThreadPoolDispatcher;
	public static final fun newSingleThreadContext (Ljava/lang/String;Lkotlinx/coroutines/experimental/Job;)Lkotlin/coroutines/experimental/CoroutineContext;
	public static synthetic fun newSingleThreadContext$default (Ljava/lang/String;Lkotlinx/coroutines/experimental/Job;ILjava/lang/Object;)Lkotlin/coroutines/experimental/CoroutineContext;
}

public final class kotlinx/coroutines/experimental/TimeoutCancellationException : java/util/concurrent/CancellationException {
	public fun <init> (Ljava/lang/String;)V
}

public final class kotlinx/coroutines/experimental/TimeoutKt {
	public static final fun withTimeout (JLkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun withTimeoutOrNull (JLkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
}

public final class kotlinx/coroutines/experimental/Unconfined : kotlinx/coroutines/experimental/CoroutineDispatcher {
	public static final field INSTANCE Lkotlinx/coroutines/experimental/Unconfined;
	public fun dispatch (Lkotlin/coroutines/experimental/CoroutineContext;Ljava/lang/Runnable;)V
	public fun isDispatchNeeded (Lkotlin/coroutines/experimental/CoroutineContext;)Z
	public fun toString ()Ljava/lang/String;
}

public final class kotlinx/coroutines/experimental/YieldKt {
	public static final fun yield (Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
}

public abstract class kotlinx/coroutines/experimental/channels/AbstractChannel : kotlinx/coroutines/experimental/channels/AbstractSendChannel, kotlinx/coroutines/experimental/channels/Channel {
	public fun <init> ()V
	public fun cancel ()Z
	public fun cancel (Ljava/lang/Throwable;)Z
	protected fun cleanupSendQueueOnCancel ()V
	protected final fun describeTryPoll ()Lkotlinx/coroutines/experimental/channels/AbstractChannel$TryPollDesc;
	protected final fun getHasReceiveOrClosed ()Z
	public final fun getOnReceive ()Lkotlinx/coroutines/experimental/selects/SelectClause1;
	public final fun getOnReceiveOrNull ()Lkotlinx/coroutines/experimental/selects/SelectClause1;
	protected abstract fun isBufferAlwaysEmpty ()Z
	protected abstract fun isBufferEmpty ()Z
	public final fun isClosedForReceive ()Z
	public final fun isEmpty ()Z
	public final fun iterator ()Lkotlinx/coroutines/experimental/channels/ChannelIterator;
	protected fun onReceiveDequeued ()V
	protected fun onReceiveEnqueued ()V
	public final fun poll ()Ljava/lang/Object;
	protected fun pollInternal ()Ljava/lang/Object;
	protected fun pollSelectInternal (Lkotlinx/coroutines/experimental/selects/SelectInstance;)Ljava/lang/Object;
	public final fun receive (Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public final fun receiveOrNull (Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	protected fun takeFirstReceiveOrPeekClosed ()Lkotlinx/coroutines/experimental/channels/ReceiveOrClosed;
}

protected final class kotlinx/coroutines/experimental/channels/AbstractChannel$TryPollDesc : kotlinx/coroutines/experimental/internal/LockFreeLinkedListNode$RemoveFirstDesc {
	public field pollResult Ljava/lang/Object;
	public field resumeToken Ljava/lang/Object;
	public fun <init> (Lkotlinx/coroutines/experimental/internal/LockFreeLinkedListHead;)V
	public synthetic fun validatePrepared (Ljava/lang/Object;)Z
}

public abstract class kotlinx/coroutines/experimental/channels/AbstractSendChannel : kotlinx/coroutines/experimental/channels/SendChannel {
	public fun <init> ()V
	protected fun afterClose (Ljava/lang/Throwable;)V
	public fun close (Ljava/lang/Throwable;)Z
	protected final fun conflatePreviousSendBuffered (Lkotlinx/coroutines/experimental/internal/LockFreeLinkedListNode;)V
	protected final fun describeSendBuffered (Ljava/lang/Object;)Lkotlinx/coroutines/experimental/internal/LockFreeLinkedListNode$AddLastDesc;
	protected final fun describeSendConflated (Ljava/lang/Object;)Lkotlinx/coroutines/experimental/internal/LockFreeLinkedListNode$AddLastDesc;
	protected final fun describeTryOffer (Ljava/lang/Object;)Lkotlinx/coroutines/experimental/channels/AbstractSendChannel$TryOfferDesc;
	protected fun getBufferDebugString ()Ljava/lang/String;
	protected final fun getClosedForReceive ()Lkotlinx/coroutines/experimental/channels/Closed;
	protected final fun getClosedForSend ()Lkotlinx/coroutines/experimental/channels/Closed;
	public final fun getOnSend ()Lkotlinx/coroutines/experimental/selects/SelectClause2;
	protected final fun getQueue ()Lkotlinx/coroutines/experimental/internal/LockFreeLinkedListHead;
	public fun invokeOnClose (Lkotlin/jvm/functions/Function1;)V
	protected abstract fun isBufferAlwaysFull ()Z
	protected abstract fun isBufferFull ()Z
	public final fun isClosedForSend ()Z
	public final fun isFull ()Z
	public final fun offer (Ljava/lang/Object;)Z
	protected fun offerInternal (Ljava/lang/Object;)Ljava/lang/Object;
	protected fun offerSelectInternal (Ljava/lang/Object;Lkotlinx/coroutines/experimental/selects/SelectInstance;)Ljava/lang/Object;
	protected fun onClosed (Lkotlinx/coroutines/experimental/channels/Closed;)V
	public final fun send (Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	protected final fun sendBuffered (Ljava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveOrClosed;
	protected final fun sendConflated (Ljava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveOrClosed;
	protected fun takeFirstReceiveOrPeekClosed ()Lkotlinx/coroutines/experimental/channels/ReceiveOrClosed;
	protected final fun takeFirstSendOrPeekClosed ()Lkotlinx/coroutines/experimental/channels/Send;
	public fun toString ()Ljava/lang/String;
}

protected final class kotlinx/coroutines/experimental/channels/AbstractSendChannel$TryOfferDesc : kotlinx/coroutines/experimental/internal/LockFreeLinkedListNode$RemoveFirstDesc {
	public final field element Ljava/lang/Object;
	public field resumeToken Ljava/lang/Object;
	public fun <init> (Ljava/lang/Object;Lkotlinx/coroutines/experimental/internal/LockFreeLinkedListHead;)V
	public synthetic fun validatePrepared (Ljava/lang/Object;)Z
}

public abstract interface class kotlinx/coroutines/experimental/channels/ActorJob : kotlinx/coroutines/experimental/channels/SendChannel {
	public abstract fun getChannel ()Lkotlinx/coroutines/experimental/channels/SendChannel;
}

public final class kotlinx/coroutines/experimental/channels/ActorKt {
	public static final fun actor (Lkotlin/coroutines/experimental/CoroutineContext;ILkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/SendChannel;
	public static final synthetic fun actor (Lkotlin/coroutines/experimental/CoroutineContext;ILkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/ActorJob;
	public static final fun actor (Lkotlin/coroutines/experimental/CoroutineContext;ILkotlinx/coroutines/experimental/CoroutineStart;Lkotlinx/coroutines/experimental/Job;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/SendChannel;
	public static final synthetic fun actor (Lkotlin/coroutines/experimental/CoroutineContext;ILkotlinx/coroutines/experimental/CoroutineStart;Lkotlinx/coroutines/experimental/Job;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/SendChannel;
	public static final fun actor (Lkotlinx/coroutines/experimental/CoroutineScope;Lkotlin/coroutines/experimental/CoroutineContext;ILkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/SendChannel;
	public static synthetic fun actor$default (Lkotlin/coroutines/experimental/CoroutineContext;ILkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/SendChannel;
	public static synthetic fun actor$default (Lkotlin/coroutines/experimental/CoroutineContext;ILkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ActorJob;
	public static synthetic fun actor$default (Lkotlin/coroutines/experimental/CoroutineContext;ILkotlinx/coroutines/experimental/CoroutineStart;Lkotlinx/coroutines/experimental/Job;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/SendChannel;
	public static synthetic fun actor$default (Lkotlin/coroutines/experimental/CoroutineContext;ILkotlinx/coroutines/experimental/CoroutineStart;Lkotlinx/coroutines/experimental/Job;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/SendChannel;
	public static synthetic fun actor$default (Lkotlinx/coroutines/experimental/CoroutineScope;Lkotlin/coroutines/experimental/CoroutineContext;ILkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/SendChannel;
}

public abstract interface class kotlinx/coroutines/experimental/channels/ActorScope : kotlinx/coroutines/experimental/CoroutineScope, kotlinx/coroutines/experimental/channels/ReceiveChannel {
	public abstract fun getChannel ()Lkotlinx/coroutines/experimental/channels/Channel;
}

public final class kotlinx/coroutines/experimental/channels/ActorScope$DefaultImpls {
	public static synthetic fun isActive (Lkotlinx/coroutines/experimental/channels/ActorScope;)Z
}

public final class kotlinx/coroutines/experimental/channels/ArrayBroadcastChannel : kotlinx/coroutines/experimental/channels/AbstractSendChannel, kotlinx/coroutines/experimental/channels/BroadcastChannel {
	public fun <init> (I)V
	public fun cancel (Ljava/lang/Throwable;)Z
	public fun close (Ljava/lang/Throwable;)Z
	public final fun getCapacity ()I
	public fun open ()Lkotlinx/coroutines/experimental/channels/SubscriptionReceiveChannel;
	public fun openSubscription ()Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public synthetic fun openSubscription ()Lkotlinx/coroutines/experimental/channels/SubscriptionReceiveChannel;
}

public class kotlinx/coroutines/experimental/channels/ArrayChannel : kotlinx/coroutines/experimental/channels/AbstractChannel {
	public fun <init> (I)V
	protected fun cleanupSendQueueOnCancel ()V
	protected fun getBufferDebugString ()Ljava/lang/String;
	public final fun getCapacity ()I
	protected final fun isBufferAlwaysEmpty ()Z
	protected final fun isBufferAlwaysFull ()Z
	protected final fun isBufferEmpty ()Z
	protected final fun isBufferFull ()Z
	protected fun offerInternal (Ljava/lang/Object;)Ljava/lang/Object;
	protected fun offerSelectInternal (Ljava/lang/Object;Lkotlinx/coroutines/experimental/selects/SelectInstance;)Ljava/lang/Object;
	protected fun pollInternal ()Ljava/lang/Object;
	protected fun pollSelectInternal (Lkotlinx/coroutines/experimental/selects/SelectInstance;)Ljava/lang/Object;
}

public abstract interface class kotlinx/coroutines/experimental/channels/BroadcastChannel : kotlinx/coroutines/experimental/channels/SendChannel {
	public static final field Factory Lkotlinx/coroutines/experimental/channels/BroadcastChannel$Factory;
	public abstract fun cancel (Ljava/lang/Throwable;)Z
	public abstract fun open ()Lkotlinx/coroutines/experimental/channels/SubscriptionReceiveChannel;
	public abstract fun openSubscription ()Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public abstract synthetic fun openSubscription ()Lkotlinx/coroutines/experimental/channels/SubscriptionReceiveChannel;
}

public final class kotlinx/coroutines/experimental/channels/BroadcastChannel$DefaultImpls {
	public static synthetic fun cancel$default (Lkotlinx/coroutines/experimental/channels/BroadcastChannel;Ljava/lang/Throwable;ILjava/lang/Object;)Z
	public static fun open (Lkotlinx/coroutines/experimental/channels/BroadcastChannel;)Lkotlinx/coroutines/experimental/channels/SubscriptionReceiveChannel;
	public static synthetic fun openSubscription (Lkotlinx/coroutines/experimental/channels/BroadcastChannel;)Lkotlinx/coroutines/experimental/channels/SubscriptionReceiveChannel;
}

public final class kotlinx/coroutines/experimental/channels/BroadcastChannel$Factory {
	public final synthetic fun invoke (I)Lkotlinx/coroutines/experimental/channels/BroadcastChannel;
}

public final class kotlinx/coroutines/experimental/channels/BroadcastChannelKt {
	public static final fun BroadcastChannel (I)Lkotlinx/coroutines/experimental/channels/BroadcastChannel;
	public static final fun use (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
}

public final class kotlinx/coroutines/experimental/channels/BroadcastKt {
	public static final fun broadcast (Lkotlin/coroutines/experimental/CoroutineContext;ILkotlinx/coroutines/experimental/CoroutineStart;Lkotlinx/coroutines/experimental/Job;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/BroadcastChannel;
	public static final fun broadcast (Lkotlinx/coroutines/experimental/CoroutineScope;Lkotlin/coroutines/experimental/CoroutineContext;ILkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/BroadcastChannel;
	public static final fun broadcast (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;ILkotlinx/coroutines/experimental/CoroutineStart;)Lkotlinx/coroutines/experimental/channels/BroadcastChannel;
	public static synthetic fun broadcast$default (Lkotlin/coroutines/experimental/CoroutineContext;ILkotlinx/coroutines/experimental/CoroutineStart;Lkotlinx/coroutines/experimental/Job;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/BroadcastChannel;
	public static synthetic fun broadcast$default (Lkotlinx/coroutines/experimental/CoroutineScope;Lkotlin/coroutines/experimental/CoroutineContext;ILkotlinx/coroutines/experimental/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/BroadcastChannel;
	public static synthetic fun broadcast$default (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;ILkotlinx/coroutines/experimental/CoroutineStart;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/BroadcastChannel;
}

public abstract interface class kotlinx/coroutines/experimental/channels/Channel : kotlinx/coroutines/experimental/channels/ReceiveChannel, kotlinx/coroutines/experimental/channels/SendChannel {
	public static final field CONFLATED I
	public static final field Factory Lkotlinx/coroutines/experimental/channels/Channel$Factory;
	public static final field UNLIMITED I
}

public final class kotlinx/coroutines/experimental/channels/Channel$Factory {
	public static final field CONFLATED I
	public static final field UNLIMITED I
	public final synthetic fun invoke (I)Lkotlinx/coroutines/experimental/channels/Channel;
	public static synthetic fun invoke$default (Lkotlinx/coroutines/experimental/channels/Channel$Factory;IILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/Channel;
}

public abstract interface class kotlinx/coroutines/experimental/channels/ChannelIterator {
	public abstract fun hasNext (Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public abstract fun next (Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
}

public final class kotlinx/coroutines/experimental/channels/ChannelKt {
	public static final synthetic fun Channel ()Lkotlinx/coroutines/experimental/channels/Channel;
	public static final fun Channel (I)Lkotlinx/coroutines/experimental/channels/Channel;
	public static synthetic fun Channel$default (IILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/Channel;
}

public final class kotlinx/coroutines/experimental/channels/ChannelsKt {
	public static final fun all (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun any (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun any (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun asReceiveChannel (Ljava/lang/Iterable;Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun asReceiveChannel (Lkotlin/sequences/Sequence;Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun asReceiveChannel$default (Ljava/lang/Iterable;Lkotlin/coroutines/experimental/CoroutineContext;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun asReceiveChannel$default (Lkotlin/sequences/Sequence;Lkotlin/coroutines/experimental/CoroutineContext;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun associate (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun associateBy (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun associateBy (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun associateByTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun associateByTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun associateTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun consume (Lkotlinx/coroutines/experimental/channels/BroadcastChannel;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
	public static final fun consume (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
	public static final fun consumeEach (Lkotlinx/coroutines/experimental/channels/BroadcastChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final synthetic fun consumeEach (Lkotlinx/coroutines/experimental/channels/BroadcastChannel;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun consumeEach (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final synthetic fun consumeEach (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun consumeEachIndexed (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun consumes (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;)Lkotlin/jvm/functions/Function1;
	public static final fun consumesAll ([Lkotlinx/coroutines/experimental/channels/ReceiveChannel;)Lkotlin/jvm/functions/Function1;
	public static final fun count (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun count (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun distinct (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun distinctBy (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun distinctBy$default (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun drop (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;ILkotlin/coroutines/experimental/CoroutineContext;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun drop$default (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;ILkotlin/coroutines/experimental/CoroutineContext;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun dropWhile (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun dropWhile$default (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun elementAt (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;ILkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun elementAtOrElse (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;ILkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun elementAtOrNull (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;ILkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun filter (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun filter$default (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun filterIndexed (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun filterIndexed$default (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function3;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun filterIndexedTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/util/Collection;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun filterIndexedTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlinx/coroutines/experimental/channels/SendChannel;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun filterNot (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final synthetic fun filterNot (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun filterNot$default (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun filterNotNull (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun filterNotNullTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/util/Collection;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun filterNotNullTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlinx/coroutines/experimental/channels/SendChannel;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun filterNotTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/util/Collection;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun filterNotTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlinx/coroutines/experimental/channels/SendChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun filterTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/util/Collection;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun filterTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlinx/coroutines/experimental/channels/SendChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun find (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun findLast (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun first (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun first (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun firstOrNull (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun firstOrNull (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun flatMap (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun flatMap$default (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun fold (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun foldIndexed (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun groupBy (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun groupBy (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun groupByTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun groupByTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun indexOf (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun indexOfFirst (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun indexOfLast (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun last (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun last (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun lastIndexOf (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun lastOrNull (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun lastOrNull (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun map (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun map$default (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun mapIndexed (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun mapIndexed$default (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function3;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun mapIndexedNotNull (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun mapIndexedNotNull$default (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function3;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun mapIndexedNotNullTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/util/Collection;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun mapIndexedNotNullTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlinx/coroutines/experimental/channels/SendChannel;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun mapIndexedTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/util/Collection;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun mapIndexedTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlinx/coroutines/experimental/channels/SendChannel;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun mapNotNull (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun mapNotNull$default (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun mapNotNullTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/util/Collection;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun mapNotNullTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlinx/coroutines/experimental/channels/SendChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun mapTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/util/Collection;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun mapTo (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlinx/coroutines/experimental/channels/SendChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun maxBy (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun maxWith (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/util/Comparator;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun minBy (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun minWith (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/util/Comparator;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun none (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun none (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun partition (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun reduce (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun reduceIndexed (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun requireNoNulls (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun sendBlocking (Lkotlinx/coroutines/experimental/channels/SendChannel;Ljava/lang/Object;)V
	public static final fun single (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun single (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun singleOrNull (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun singleOrNull (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun sumBy (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun sumByDouble (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun take (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;ILkotlin/coroutines/experimental/CoroutineContext;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun take$default (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;ILkotlin/coroutines/experimental/CoroutineContext;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun takeWhile (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun takeWhile$default (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun toChannel (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlinx/coroutines/experimental/channels/SendChannel;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun toCollection (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/util/Collection;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun toList (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun toMap (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/util/Map;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun toMap (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun toMutableList (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun toMutableSet (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun toSet (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final fun withIndex (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun withIndex$default (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun zip (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlinx/coroutines/experimental/channels/ReceiveChannel;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun zip (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun zip$default (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
}

public final class kotlinx/coroutines/experimental/channels/Closed : kotlinx/coroutines/experimental/internal/LockFreeLinkedListNode, kotlinx/coroutines/experimental/channels/ReceiveOrClosed, kotlinx/coroutines/experimental/channels/Send {
	public final field closeCause Ljava/lang/Throwable;
	public fun <init> (Ljava/lang/Throwable;)V
	public fun completeResumeReceive (Ljava/lang/Object;)V
	public fun completeResumeSend (Ljava/lang/Object;)V
	public synthetic fun getOfferResult ()Ljava/lang/Object;
	public fun getOfferResult ()Lkotlinx/coroutines/experimental/channels/Closed;
	public synthetic fun getPollResult ()Ljava/lang/Object;
	public fun getPollResult ()Lkotlinx/coroutines/experimental/channels/Closed;
	public final fun getReceiveException ()Ljava/lang/Throwable;
	public final fun getSendException ()Ljava/lang/Throwable;
	public fun resumeSendClosed (Lkotlinx/coroutines/experimental/channels/Closed;)Ljava/lang/Void;
	public synthetic fun resumeSendClosed (Lkotlinx/coroutines/experimental/channels/Closed;)V
	public fun toString ()Ljava/lang/String;
	public fun tryResumeReceive (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
	public fun tryResumeSend (Ljava/lang/Object;)Ljava/lang/Object;
}

public final class kotlinx/coroutines/experimental/channels/ClosedReceiveChannelException : java/util/NoSuchElementException {
	public fun <init> (Ljava/lang/String;)V
}

public final class kotlinx/coroutines/experimental/channels/ClosedSendChannelException : java/util/concurrent/CancellationException {
	public fun <init> (Ljava/lang/String;)V
}

public final class kotlinx/coroutines/experimental/channels/ConflatedBroadcastChannel : kotlinx/coroutines/experimental/channels/BroadcastChannel {
	public static final field CLOSED Lkotlinx/coroutines/experimental/channels/ConflatedBroadcastChannel$Closed;
	public static final field Companion Lkotlinx/coroutines/experimental/channels/ConflatedBroadcastChannel$Companion;
	public static final field INITIAL_STATE Lkotlinx/coroutines/experimental/channels/ConflatedBroadcastChannel$State;
	public static final field UNDEFINED Lkotlinx/coroutines/experimental/internal/Symbol;
	public fun <init> ()V
	public fun <init> (Ljava/lang/Object;)V
	public fun cancel (Ljava/lang/Throwable;)Z
	public fun close (Ljava/lang/Throwable;)Z
	public fun getOnSend ()Lkotlinx/coroutines/experimental/selects/SelectClause2;
	public final fun getValue ()Ljava/lang/Object;
	public final fun getValueOrNull ()Ljava/lang/Object;
	public fun invokeOnClose (Lkotlin/jvm/functions/Function1;)V
	public fun isClosedForSend ()Z
	public fun isFull ()Z
	public fun offer (Ljava/lang/Object;)Z
	public fun open ()Lkotlinx/coroutines/experimental/channels/SubscriptionReceiveChannel;
	public fun openSubscription ()Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public synthetic fun openSubscription ()Lkotlinx/coroutines/experimental/channels/SubscriptionReceiveChannel;
	public fun send (Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
}

public class kotlinx/coroutines/experimental/channels/ConflatedChannel : kotlinx/coroutines/experimental/channels/AbstractChannel {
	public fun <init> ()V
	protected final fun isBufferAlwaysEmpty ()Z
	protected final fun isBufferAlwaysFull ()Z
	protected final fun isBufferEmpty ()Z
	protected final fun isBufferFull ()Z
	protected fun offerInternal (Ljava/lang/Object;)Ljava/lang/Object;
	protected fun offerSelectInternal (Ljava/lang/Object;Lkotlinx/coroutines/experimental/selects/SelectInstance;)Ljava/lang/Object;
	protected fun onClosed (Lkotlinx/coroutines/experimental/channels/Closed;)V
}

public class kotlinx/coroutines/experimental/channels/LinkedListChannel : kotlinx/coroutines/experimental/channels/AbstractChannel {
	public fun <init> ()V
	protected final fun isBufferAlwaysEmpty ()Z
	protected final fun isBufferAlwaysFull ()Z
	protected final fun isBufferEmpty ()Z
	protected final fun isBufferFull ()Z
	protected fun offerInternal (Ljava/lang/Object;)Ljava/lang/Object;
	protected fun offerSelectInternal (Ljava/lang/Object;Lkotlinx/coroutines/experimental/selects/SelectInstance;)Ljava/lang/Object;
}

public final class kotlinx/coroutines/experimental/channels/ProduceKt {
	public static final fun buildChannel (Lkotlin/coroutines/experimental/CoroutineContext;ILkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/ProducerJob;
	public static synthetic fun buildChannel$default (Lkotlin/coroutines/experimental/CoroutineContext;ILkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ProducerJob;
	public static final fun produce (Lkotlin/coroutines/experimental/CoroutineContext;ILkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final synthetic fun produce (Lkotlin/coroutines/experimental/CoroutineContext;ILkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/ProducerJob;
	public static final fun produce (Lkotlin/coroutines/experimental/CoroutineContext;ILkotlinx/coroutines/experimental/Job;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final synthetic fun produce (Lkotlin/coroutines/experimental/CoroutineContext;ILkotlinx/coroutines/experimental/Job;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun produce (Lkotlinx/coroutines/experimental/CoroutineScope;Lkotlin/coroutines/experimental/CoroutineContext;ILkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun produce (Lkotlinx/coroutines/experimental/CoroutineScope;Lkotlin/coroutines/experimental/CoroutineContext;ILkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun produce$default (Lkotlin/coroutines/experimental/CoroutineContext;ILkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun produce$default (Lkotlin/coroutines/experimental/CoroutineContext;ILkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ProducerJob;
	public static synthetic fun produce$default (Lkotlin/coroutines/experimental/CoroutineContext;ILkotlinx/coroutines/experimental/Job;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun produce$default (Lkotlin/coroutines/experimental/CoroutineContext;ILkotlinx/coroutines/experimental/Job;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun produce$default (Lkotlinx/coroutines/experimental/CoroutineScope;Lkotlin/coroutines/experimental/CoroutineContext;ILkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun produce$default (Lkotlinx/coroutines/experimental/CoroutineScope;Lkotlin/coroutines/experimental/CoroutineContext;ILkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
}

public abstract interface class kotlinx/coroutines/experimental/channels/ProducerJob : kotlinx/coroutines/experimental/Job, kotlinx/coroutines/experimental/channels/ReceiveChannel {
	public abstract fun getChannel ()Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
}

public final class kotlinx/coroutines/experimental/channels/ProducerJob$DefaultImpls {
	public static fun fold (Lkotlinx/coroutines/experimental/channels/ProducerJob;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
	public static fun get (Lkotlinx/coroutines/experimental/channels/ProducerJob;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element;
	public static fun getCompletionException (Lkotlinx/coroutines/experimental/channels/ProducerJob;)Ljava/lang/Throwable;
	public static fun minusKey (Lkotlinx/coroutines/experimental/channels/ProducerJob;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext;
	public static fun plus (Lkotlinx/coroutines/experimental/channels/ProducerJob;Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext;
	public static fun plus (Lkotlinx/coroutines/experimental/channels/ProducerJob;Lkotlinx/coroutines/experimental/Job;)Lkotlinx/coroutines/experimental/Job;
}

public abstract interface class kotlinx/coroutines/experimental/channels/ProducerScope : kotlinx/coroutines/experimental/CoroutineScope, kotlinx/coroutines/experimental/channels/SendChannel {
	public abstract fun getChannel ()Lkotlinx/coroutines/experimental/channels/SendChannel;
}

public final class kotlinx/coroutines/experimental/channels/ProducerScope$DefaultImpls {
	public static synthetic fun isActive (Lkotlinx/coroutines/experimental/channels/ProducerScope;)Z
}

public abstract interface class kotlinx/coroutines/experimental/channels/ReceiveChannel {
	public abstract fun cancel ()Z
	public abstract fun cancel (Ljava/lang/Throwable;)Z
	public abstract fun getOnReceive ()Lkotlinx/coroutines/experimental/selects/SelectClause1;
	public abstract fun getOnReceiveOrNull ()Lkotlinx/coroutines/experimental/selects/SelectClause1;
	public abstract fun isClosedForReceive ()Z
	public abstract fun isEmpty ()Z
	public abstract fun iterator ()Lkotlinx/coroutines/experimental/channels/ChannelIterator;
	public abstract fun poll ()Ljava/lang/Object;
	public abstract fun receive (Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public abstract fun receiveOrNull (Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
}

public final class kotlinx/coroutines/experimental/channels/ReceiveChannel$DefaultImpls {
	public static synthetic fun cancel$default (Lkotlinx/coroutines/experimental/channels/ReceiveChannel;Ljava/lang/Throwable;ILjava/lang/Object;)Z
}

public abstract interface class kotlinx/coroutines/experimental/channels/ReceiveOrClosed {
	public abstract fun completeResumeReceive (Ljava/lang/Object;)V
	public abstract fun getOfferResult ()Ljava/lang/Object;
	public abstract fun tryResumeReceive (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
}

public class kotlinx/coroutines/experimental/channels/RendezvousChannel : kotlinx/coroutines/experimental/channels/AbstractChannel {
	public fun <init> ()V
	protected final fun isBufferAlwaysEmpty ()Z
	protected final fun isBufferAlwaysFull ()Z
	protected final fun isBufferEmpty ()Z
	protected final fun isBufferFull ()Z
}

public abstract interface class kotlinx/coroutines/experimental/channels/Send {
	public abstract fun completeResumeSend (Ljava/lang/Object;)V
	public abstract fun getPollResult ()Ljava/lang/Object;
	public abstract fun resumeSendClosed (Lkotlinx/coroutines/experimental/channels/Closed;)V
	public abstract fun tryResumeSend (Ljava/lang/Object;)Ljava/lang/Object;
}

public abstract interface class kotlinx/coroutines/experimental/channels/SendChannel {
	public abstract fun close (Ljava/lang/Throwable;)Z
	public abstract fun getOnSend ()Lkotlinx/coroutines/experimental/selects/SelectClause2;
	public abstract fun invokeOnClose (Lkotlin/jvm/functions/Function1;)V
	public abstract fun isClosedForSend ()Z
	public abstract fun isFull ()Z
	public abstract fun offer (Ljava/lang/Object;)Z
	public abstract fun send (Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
}

public final class kotlinx/coroutines/experimental/channels/SendChannel$DefaultImpls {
	public static synthetic fun close$default (Lkotlinx/coroutines/experimental/channels/SendChannel;Ljava/lang/Throwable;ILjava/lang/Object;)Z
}

public final class kotlinx/coroutines/experimental/channels/SendElement : kotlinx/coroutines/experimental/internal/LockFreeLinkedListNode, kotlinx/coroutines/experimental/channels/Send {
	public final field cont Lkotlinx/coroutines/experimental/CancellableContinuation;
	public fun <init> (Ljava/lang/Object;Lkotlinx/coroutines/experimental/CancellableContinuation;)V
	public fun completeResumeSend (Ljava/lang/Object;)V
	public fun getPollResult ()Ljava/lang/Object;
	public fun resumeSendClosed (Lkotlinx/coroutines/experimental/channels/Closed;)V
	public fun toString ()Ljava/lang/String;
	public fun tryResumeSend (Ljava/lang/Object;)Ljava/lang/Object;
}

public abstract interface class kotlinx/coroutines/experimental/channels/SubscriptionReceiveChannel : java/io/Closeable, kotlinx/coroutines/experimental/channels/ReceiveChannel {
	public abstract fun close ()V
}

public final class kotlinx/coroutines/experimental/channels/SubscriptionReceiveChannel$DefaultImpls {
	public static fun close (Lkotlinx/coroutines/experimental/channels/SubscriptionReceiveChannel;)V
}

public final class kotlinx/coroutines/experimental/channels/TickerChannelsKt {
	public static final fun ticker (JJLkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/channels/TickerMode;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static final fun ticker (JLjava/util/concurrent/TimeUnit;JLkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/channels/TickerMode;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun ticker$default (JJLkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/channels/TickerMode;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
	public static synthetic fun ticker$default (JLjava/util/concurrent/TimeUnit;JLkotlin/coroutines/experimental/CoroutineContext;Lkotlinx/coroutines/experimental/channels/TickerMode;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/channels/ReceiveChannel;
}

public final class kotlinx/coroutines/experimental/channels/TickerMode : java/lang/Enum {
	public static final field FIXED_DELAY Lkotlinx/coroutines/experimental/channels/TickerMode;
	public static final field FIXED_PERIOD Lkotlinx/coroutines/experimental/channels/TickerMode;
	public static fun valueOf (Ljava/lang/String;)Lkotlinx/coroutines/experimental/channels/TickerMode;
	public static fun values ()[Lkotlinx/coroutines/experimental/channels/TickerMode;
}

public final class kotlinx/coroutines/experimental/intrinsics/CancellableKt {
	public static final fun startCoroutineCancellable (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)V
	public static final fun startCoroutineCancellable (Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;)V
}

public final class kotlinx/coroutines/experimental/intrinsics/UndispatchedKt {
	public static final fun startCoroutineUndispatched (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)V
	public static final fun startCoroutineUndispatched (Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;)V
	public static final fun startCoroutineUnintercepted (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)V
	public static final fun startCoroutineUnintercepted (Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;)V
	public static final fun startUndispatchedOrReturn (Lkotlinx/coroutines/experimental/AbstractCoroutine;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
	public static final fun startUndispatchedOrReturn (Lkotlinx/coroutines/experimental/AbstractCoroutine;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
}

public abstract interface class kotlinx/coroutines/experimental/selects/SelectBuilder {
	public abstract fun invoke (Lkotlinx/coroutines/experimental/selects/SelectClause0;Lkotlin/jvm/functions/Function1;)V
	public abstract fun invoke (Lkotlinx/coroutines/experimental/selects/SelectClause1;Lkotlin/jvm/functions/Function2;)V
	public abstract fun invoke (Lkotlinx/coroutines/experimental/selects/SelectClause2;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V
	public abstract fun invoke (Lkotlinx/coroutines/experimental/selects/SelectClause2;Lkotlin/jvm/functions/Function2;)V
	public abstract fun onTimeout (JLjava/util/concurrent/TimeUnit;Lkotlin/jvm/functions/Function1;)V
	public abstract fun onTimeout (JLkotlin/jvm/functions/Function1;)V
}

public final class kotlinx/coroutines/experimental/selects/SelectBuilder$DefaultImpls {
	public static fun invoke (Lkotlinx/coroutines/experimental/selects/SelectBuilder;Lkotlinx/coroutines/experimental/selects/SelectClause2;Lkotlin/jvm/functions/Function2;)V
	public static fun onTimeout (Lkotlinx/coroutines/experimental/selects/SelectBuilder;JLjava/util/concurrent/TimeUnit;Lkotlin/jvm/functions/Function1;)V
	public static synthetic fun onTimeout$default (Lkotlinx/coroutines/experimental/selects/SelectBuilder;JLjava/util/concurrent/TimeUnit;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
}

public final class kotlinx/coroutines/experimental/selects/SelectBuilderImpl : kotlinx/coroutines/experimental/internal/LockFreeLinkedListHead, kotlin/coroutines/experimental/Continuation, kotlinx/coroutines/experimental/selects/SelectBuilder, kotlinx/coroutines/experimental/selects/SelectInstance {
	public fun <init> (Lkotlin/coroutines/experimental/Continuation;)V
	public fun disposeOnSelect (Lkotlinx/coroutines/experimental/DisposableHandle;)V
	public fun getCompletion ()Lkotlin/coroutines/experimental/Continuation;
	public fun getContext ()Lkotlin/coroutines/experimental/CoroutineContext;
	public final fun getResult ()Ljava/lang/Object;
	public final fun handleBuilderException (Ljava/lang/Throwable;)V
	public fun invoke (Lkotlinx/coroutines/experimental/selects/SelectClause0;Lkotlin/jvm/functions/Function1;)V
	public fun invoke (Lkotlinx/coroutines/experimental/selects/SelectClause1;Lkotlin/jvm/functions/Function2;)V
	public fun invoke (Lkotlinx/coroutines/experimental/selects/SelectClause2;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V
	public fun invoke (Lkotlinx/coroutines/experimental/selects/SelectClause2;Lkotlin/jvm/functions/Function2;)V
	public fun isSelected ()Z
	public fun onTimeout (JLjava/util/concurrent/TimeUnit;Lkotlin/jvm/functions/Function1;)V
	public fun onTimeout (JLkotlin/jvm/functions/Function1;)V
	public fun performAtomicIfNotSelected (Lkotlinx/coroutines/experimental/internal/AtomicDesc;)Ljava/lang/Object;
	public fun performAtomicTrySelect (Lkotlinx/coroutines/experimental/internal/AtomicDesc;)Ljava/lang/Object;
	public fun resume (Ljava/lang/Object;)V
	public fun resumeSelectCancellableWithException (Ljava/lang/Throwable;)V
	public fun resumeWithException (Ljava/lang/Throwable;)V
	public fun trySelect (Ljava/lang/Object;)Z
}

public abstract interface class kotlinx/coroutines/experimental/selects/SelectClause0 {
	public abstract fun registerSelectClause0 (Lkotlinx/coroutines/experimental/selects/SelectInstance;Lkotlin/jvm/functions/Function1;)V
}

public abstract interface class kotlinx/coroutines/experimental/selects/SelectClause1 {
	public abstract fun registerSelectClause1 (Lkotlinx/coroutines/experimental/selects/SelectInstance;Lkotlin/jvm/functions/Function2;)V
}

public abstract interface class kotlinx/coroutines/experimental/selects/SelectClause2 {
	public abstract fun registerSelectClause2 (Lkotlinx/coroutines/experimental/selects/SelectInstance;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V
}

public abstract interface class kotlinx/coroutines/experimental/selects/SelectInstance {
	public abstract fun disposeOnSelect (Lkotlinx/coroutines/experimental/DisposableHandle;)V
	public abstract fun getCompletion ()Lkotlin/coroutines/experimental/Continuation;
	public abstract fun isSelected ()Z
	public abstract fun performAtomicIfNotSelected (Lkotlinx/coroutines/experimental/internal/AtomicDesc;)Ljava/lang/Object;
	public abstract fun performAtomicTrySelect (Lkotlinx/coroutines/experimental/internal/AtomicDesc;)Ljava/lang/Object;
	public abstract fun resumeSelectCancellableWithException (Ljava/lang/Throwable;)V
	public abstract fun trySelect (Ljava/lang/Object;)Z
}

public final class kotlinx/coroutines/experimental/selects/UnbiasedSelectBuilderImpl : kotlinx/coroutines/experimental/selects/SelectBuilder {
	public fun <init> (Lkotlin/coroutines/experimental/Continuation;)V
	public final fun getClauses ()Ljava/util/ArrayList;
	public final fun getInstance ()Lkotlinx/coroutines/experimental/selects/SelectBuilderImpl;
	public final fun handleBuilderException (Ljava/lang/Throwable;)V
	public final fun initSelectResult ()Ljava/lang/Object;
	public fun invoke (Lkotlinx/coroutines/experimental/selects/SelectClause0;Lkotlin/jvm/functions/Function1;)V
	public fun invoke (Lkotlinx/coroutines/experimental/selects/SelectClause1;Lkotlin/jvm/functions/Function2;)V
	public fun invoke (Lkotlinx/coroutines/experimental/selects/SelectClause2;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V
	public fun invoke (Lkotlinx/coroutines/experimental/selects/SelectClause2;Lkotlin/jvm/functions/Function2;)V
	public fun onTimeout (JLjava/util/concurrent/TimeUnit;Lkotlin/jvm/functions/Function1;)V
	public fun onTimeout (JLkotlin/jvm/functions/Function1;)V
}

public abstract interface class kotlinx/coroutines/experimental/sync/Mutex {
	public abstract fun getOnLock ()Lkotlinx/coroutines/experimental/selects/SelectClause2;
	public abstract fun holdsLock (Ljava/lang/Object;)Z
	public abstract fun isLocked ()Z
	public abstract fun lock (Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public abstract fun tryLock (Ljava/lang/Object;)Z
	public abstract fun unlock (Ljava/lang/Object;)V
}

public final class kotlinx/coroutines/experimental/sync/Mutex$DefaultImpls {
	public static synthetic fun lock$default (Lkotlinx/coroutines/experimental/sync/Mutex;Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
	public static synthetic fun tryLock$default (Lkotlinx/coroutines/experimental/sync/Mutex;Ljava/lang/Object;ILjava/lang/Object;)Z
	public static synthetic fun unlock$default (Lkotlinx/coroutines/experimental/sync/Mutex;Ljava/lang/Object;ILjava/lang/Object;)V
}

public final class kotlinx/coroutines/experimental/sync/MutexKt {
	public static final fun Mutex (Z)Lkotlinx/coroutines/experimental/sync/Mutex;
	public static synthetic fun Mutex$default (ZILjava/lang/Object;)Lkotlinx/coroutines/experimental/sync/Mutex;
	public static final fun withLock (Lkotlinx/coroutines/experimental/sync/Mutex;Ljava/lang/Object;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final synthetic fun withLock (Lkotlinx/coroutines/experimental/sync/Mutex;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static final synthetic fun withLock (Lkotlinx/coroutines/experimental/sync/Mutex;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
	public static synthetic fun withLock$default (Lkotlinx/coroutines/experimental/sync/Mutex;Ljava/lang/Object;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/experimental/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
	public static synthetic fun withLock$default (Lkotlinx/coroutines/experimental/sync/Mutex;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
	public static final fun withMutex (Lkotlinx/coroutines/experimental/sync/Mutex;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
}

public final class kotlinx/coroutines/experimental/test/TestCoroutineContext : kotlin/coroutines/experimental/CoroutineContext {
	public fun <init> ()V
	public fun <init> (Ljava/lang/String;)V
	public synthetic fun <init> (Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
	public final fun advanceTimeBy (JLjava/util/concurrent/TimeUnit;)J
	public static synthetic fun advanceTimeBy$default (Lkotlinx/coroutines/experimental/test/TestCoroutineContext;JLjava/util/concurrent/TimeUnit;ILjava/lang/Object;)J
	public final fun advanceTimeTo (JLjava/util/concurrent/TimeUnit;)V
	public static synthetic fun advanceTimeTo$default (Lkotlinx/coroutines/experimental/test/TestCoroutineContext;JLjava/util/concurrent/TimeUnit;ILjava/lang/Object;)V
	public final fun assertAllUnhandledExceptions (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
	public static synthetic fun assertAllUnhandledExceptions$default (Lkotlinx/coroutines/experimental/test/TestCoroutineContext;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
	public final fun assertAnyUnhandledException (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
	public static synthetic fun assertAnyUnhandledException$default (Lkotlinx/coroutines/experimental/test/TestCoroutineContext;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
	public final fun assertExceptions (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
	public static synthetic fun assertExceptions$default (Lkotlinx/coroutines/experimental/test/TestCoroutineContext;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
	public final fun assertUnhandledException (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
	public static synthetic fun assertUnhandledException$default (Lkotlinx/coroutines/experimental/test/TestCoroutineContext;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
	public final fun cancelAllActions ()V
	public fun fold (Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
	public fun get (Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element;
	public final fun getExceptions ()Ljava/util/List;
	public fun minusKey (Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext;
	public final fun now (Ljava/util/concurrent/TimeUnit;)J
	public static synthetic fun now$default (Lkotlinx/coroutines/experimental/test/TestCoroutineContext;Ljava/util/concurrent/TimeUnit;ILjava/lang/Object;)J
	public fun plus (Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext;
	public fun toString ()Ljava/lang/String;
	public final fun triggerActions ()V
}

public final class kotlinx/coroutines/experimental/test/TestCoroutineContextKt {
	public static final fun withTestContext (Lkotlinx/coroutines/experimental/test/TestCoroutineContext;Lkotlin/jvm/functions/Function1;)V
	public static synthetic fun withTestContext$default (Lkotlinx/coroutines/experimental/test/TestCoroutineContext;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
}

