startUndispatchedCoroutine is renamed to startCoroutineUndispatched for consistency with coroutine intrinsics
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Deferred.kt b/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Deferred.kt
index 2e69343..a795d8b 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Deferred.kt
+++ b/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Deferred.kt
@@ -16,7 +16,7 @@
 
 package kotlinx.coroutines.experimental
 
-import kotlinx.coroutines.experimental.intrinsics.startUndispatchedCoroutine
+import kotlinx.coroutines.experimental.intrinsics.startCoroutineUndispatched
 import kotlinx.coroutines.experimental.selects.SelectBuilder
 import kotlinx.coroutines.experimental.selects.SelectInstance
 import kotlinx.coroutines.experimental.selects.select
@@ -177,7 +177,7 @@
                     if (state is CompletedExceptionally)
                         select.resumeSelectWithException(state.exception, MODE_DIRECT)
                     else
-                        block.startUndispatchedCoroutine(state as T, select.completion)
+                        block.startCoroutineUndispatched(state as T, select.completion)
                 }
                 return
             }
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Job.kt b/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Job.kt
index 503f9a7..60cac4e 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Job.kt
+++ b/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Job.kt
@@ -17,7 +17,7 @@
 package kotlinx.coroutines.experimental
 
 import kotlinx.coroutines.experimental.internal.*
-import kotlinx.coroutines.experimental.intrinsics.startUndispatchedCoroutine
+import kotlinx.coroutines.experimental.intrinsics.startCoroutineUndispatched
 import kotlinx.coroutines.experimental.selects.SelectBuilder
 import kotlinx.coroutines.experimental.selects.SelectInstance
 import kotlinx.coroutines.experimental.selects.select
@@ -617,7 +617,7 @@
             if (state !is Incomplete) {
                 // already complete -- select result
                 if (select.trySelect(idempotent = null))
-                    block.startUndispatchedCoroutine(select.completion)
+                    block.startCoroutineUndispatched(select.completion)
                 return
             }
             if (startInternal(state) == 0) {
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Scheduled.kt b/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Scheduled.kt
index 7e47932..200f9d2 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Scheduled.kt
+++ b/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Scheduled.kt
@@ -16,7 +16,7 @@
 
 package kotlinx.coroutines.experimental
 
-import kotlinx.coroutines.experimental.intrinsics.startUndispatchedCoroutine
+import kotlinx.coroutines.experimental.intrinsics.startCoroutineUndispatched
 import java.util.concurrent.ScheduledExecutorService
 import java.util.concurrent.ScheduledThreadPoolExecutor
 import java.util.concurrent.TimeUnit
@@ -81,7 +81,7 @@
             cont.cancelFutureOnCompletion(scheduledExecutor.schedule(cont, time, unit))
         // restart block using cancellable context of this continuation,
         // however start it as undispatched coroutine, because we are already in the proper context
-        block.startUndispatchedCoroutine(cont)
+        block.startCoroutineUndispatched(cont)
         cont.getResult()
     }
 }
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/AbstractChannel.kt b/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/AbstractChannel.kt
index 1cfe134..a2b1c8a 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/AbstractChannel.kt
+++ b/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/AbstractChannel.kt
@@ -18,7 +18,7 @@
 
 import kotlinx.coroutines.experimental.*
 import kotlinx.coroutines.experimental.internal.*
-import kotlinx.coroutines.experimental.intrinsics.startUndispatchedCoroutine
+import kotlinx.coroutines.experimental.intrinsics.startCoroutineUndispatched
 import kotlinx.coroutines.experimental.selects.SelectInstance
 import kotlin.coroutines.experimental.startCoroutine
 
@@ -341,7 +341,7 @@
                     offerResult === ALREADY_SELECTED -> return
                     offerResult === OFFER_FAILED -> {} // retry
                     offerResult === OFFER_SUCCESS -> {
-                        block.startUndispatchedCoroutine(select.completion)
+                        block.startCoroutineUndispatched(select.completion)
                         return
                     }
                     offerResult is Closed<*> -> throw offerResult.sendException
@@ -531,7 +531,7 @@
                     pollResult === POLL_FAILED -> {} // retry
                     pollResult is Closed<*> -> throw pollResult.receiveException
                     else -> {
-                        block.startUndispatchedCoroutine(pollResult as E, select.completion)
+                        block.startCoroutineUndispatched(pollResult as E, select.completion)
                         return
                     }
                 }
@@ -559,14 +559,14 @@
                     pollResult is Closed<*> -> {
                         if (pollResult.closeCause == null) {
                             if (select.trySelect(idempotent = null))
-                                block.startUndispatchedCoroutine(null, select.completion)
+                                block.startCoroutineUndispatched(null, select.completion)
                             return
                         } else
                             throw pollResult.closeCause
                     }
                     else -> {
                         // selected successfully
-                        block.startUndispatchedCoroutine(pollResult as E, select.completion)
+                        block.startCoroutineUndispatched(pollResult as E, select.completion)
                         return
                     }
                 }
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/intrinsics/Undispatched.kt b/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/intrinsics/Undispatched.kt
index 43419fb..e5b18c0 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/intrinsics/Undispatched.kt
+++ b/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/intrinsics/Undispatched.kt
@@ -17,7 +17,7 @@
 package kotlinx.coroutines.experimental.intrinsics
 
 import kotlin.coroutines.experimental.Continuation
-import kotlin.coroutines.experimental.intrinsics.COROUTINE_SUSPENDED
+import kotlin.coroutines.experimental.intrinsics.*
 import kotlin.coroutines.experimental.suspendCoroutine
 
 /**
@@ -26,9 +26,9 @@
  * @suppress **This is unstable API and it is subject to change.**
  */
 @Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN", "UNCHECKED_CAST")
-internal fun <R> (suspend () -> R).startUndispatchedCoroutine(completion: Continuation<R>) {
+internal fun <R> (suspend () -> R).startCoroutineUndispatched(completion: Continuation<R>) {
     val value = try {
-        (this as kotlin.jvm.functions.Function1<Continuation<R>, Any?>).invoke(completion)
+        startCoroutineUninterceptedOrReturn(completion)
     } catch (e: Throwable) {
         completion.resumeWithException(e)
         return
@@ -43,9 +43,9 @@
  * @suppress **This is unstable API and it is subject to change.**
  */
 @Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN", "UNCHECKED_CAST")
-internal fun <E, R> (suspend (E) -> R).startUndispatchedCoroutine(element: E, completion: Continuation<R>) {
+internal fun <E, R> (suspend (E) -> R).startCoroutineUndispatched(element: E, completion: Continuation<R>) {
     val value = try {
-        (this as kotlin.jvm.functions.Function2<E, Continuation<R>, Any?>).invoke(element, completion)
+        startCoroutineUninterceptedOrReturn(element, completion)
     } catch (e: Throwable) {
         completion.resumeWithException(e)
         return
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/sync/Mutex.kt b/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/sync/Mutex.kt
index 66d32b1..9ea8875 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/sync/Mutex.kt
+++ b/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/sync/Mutex.kt
@@ -18,7 +18,7 @@
 
 import kotlinx.coroutines.experimental.*
 import kotlinx.coroutines.experimental.internal.*
-import kotlinx.coroutines.experimental.intrinsics.startUndispatchedCoroutine
+import kotlinx.coroutines.experimental.intrinsics.startCoroutineUndispatched
 import kotlinx.coroutines.experimental.selects.SelectBuilder
 import kotlinx.coroutines.experimental.selects.SelectInstance
 import kotlinx.coroutines.experimental.selects.select
@@ -217,7 +217,7 @@
                         val failure = select.performAtomicTrySelect(TryLockDesc(this, owner))
                         when {
                             failure == null -> { // success
-                                block.startUndispatchedCoroutine(select.completion)
+                                block.startCoroutineUndispatched(select.completion)
                                 return
                             }
                             failure === ALREADY_SELECTED -> return // already selected -- bail out