Update Kotlin (#2902)

* Update Kotlin to 1.5.30
* Add new M1 targets
diff --git a/README.md b/README.md
index 3cdce43..99ae18b 100644
--- a/README.md
+++ b/README.md
@@ -3,11 +3,11 @@
 [![official JetBrains project](https://jb.gg/badges/official.svg)](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
 [![GitHub license](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg?style=flat)](https://www.apache.org/licenses/LICENSE-2.0)
 [![Download](https://img.shields.io/maven-central/v/org.jetbrains.kotlinx/kotlinx-coroutines-core/1.5.1)](https://search.maven.org/artifact/org.jetbrains.kotlinx/kotlinx-coroutines-core/1.5.1/pom)
-[![Kotlin](https://img.shields.io/badge/kotlin-1.5.20-blue.svg?logo=kotlin)](http://kotlinlang.org)
+[![Kotlin](https://img.shields.io/badge/kotlin-1.5.30-blue.svg?logo=kotlin)](http://kotlinlang.org)
 [![Slack channel](https://img.shields.io/badge/chat-slack-green.svg?logo=slack)](https://kotlinlang.slack.com/messages/coroutines/)
 
 Library support for Kotlin coroutines with [multiplatform](#multiplatform) support.
-This is a companion version for the Kotlin `1.5.20` release.
+This is a companion version for the Kotlin `1.5.30` release.
 
 ```kotlin
 suspend fun main() = coroutineScope {
@@ -91,7 +91,7 @@
 
 ```xml
 <properties>
-    <kotlin.version>1.5.20</kotlin.version>
+    <kotlin.version>1.5.30</kotlin.version>
 </properties>
 ```
 
@@ -109,7 +109,7 @@
 
 ```groovy
 buildscript {
-    ext.kotlin_version = '1.5.20'
+    ext.kotlin_version = '1.5.30'
 }
 ```
 
diff --git a/gradle.properties b/gradle.properties
index 33049b2..4c5e747 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -5,12 +5,12 @@
 # Kotlin
 version=1.5.1-SNAPSHOT
 group=org.jetbrains.kotlinx
-kotlin_version=1.5.20
+kotlin_version=1.5.30
 
 # Dependencies
 junit_version=4.12
 junit5_version=5.7.0
-atomicfu_version=0.16.2
+atomicfu_version=0.16.3
 knit_version=0.3.0
 html_version=0.7.2
 lincheck_version=2.14
diff --git a/gradle/compile-native-multiplatform.gradle b/gradle/compile-native-multiplatform.gradle
index 73e99e8..0a247ed 100644
--- a/gradle/compile-native-multiplatform.gradle
+++ b/gradle/compile-native-multiplatform.gradle
@@ -25,6 +25,10 @@
         addTarget(presets.watchosArm64)
         addTarget(presets.watchosX86)
         addTarget(presets.watchosX64)
+        addTarget(presets.iosSimulatorArm64)
+        addTarget(presets.watchosSimulatorArm64)
+        addTarget(presets.tvosSimulatorArm64)
+        addTarget(presets.macosArm64)
     }
 
     sourceSets {
diff --git a/kotlinx-coroutines-core/common/test/CoroutineDispatcherOperatorFunInvokeTest.kt b/kotlinx-coroutines-core/common/test/CoroutineDispatcherOperatorFunInvokeTest.kt
index 6fdd3bb..e6b340c 100644
--- a/kotlinx-coroutines-core/common/test/CoroutineDispatcherOperatorFunInvokeTest.kt
+++ b/kotlinx-coroutines-core/common/test/CoroutineDispatcherOperatorFunInvokeTest.kt
@@ -65,7 +65,6 @@
             dispatcher.dispatch(context, block)
         }
 
-        @ExperimentalCoroutinesApi
         override fun isDispatchNeeded(context: CoroutineContext): Boolean {
             return dispatcher.isDispatchNeeded(context)
         }
diff --git a/kotlinx-coroutines-core/common/test/flow/VirtualTime.kt b/kotlinx-coroutines-core/common/test/flow/VirtualTime.kt
index b2d957b..bba5c6b 100644
--- a/kotlinx-coroutines-core/common/test/flow/VirtualTime.kt
+++ b/kotlinx-coroutines-core/common/test/flow/VirtualTime.kt
@@ -48,7 +48,6 @@
         originalDispatcher.dispatch(context, block)
     }
 
-    @ExperimentalCoroutinesApi
     override fun isDispatchNeeded(context: CoroutineContext): Boolean = originalDispatcher.isDispatchNeeded(context)
 
     override fun invokeOnTimeout(timeMillis: Long, block: Runnable, context: CoroutineContext): DisposableHandle {
diff --git a/kotlinx-coroutines-core/jvm/test/FieldWalker.kt b/kotlinx-coroutines-core/jvm/test/FieldWalker.kt
index 88feda4..179b2e5 100644
--- a/kotlinx-coroutines-core/jvm/test/FieldWalker.kt
+++ b/kotlinx-coroutines-core/jvm/test/FieldWalker.kt
@@ -89,6 +89,7 @@
                     cur = ref.parent
                     path += "[${ref.index}]"
                 }
+                else -> error("Should not be reached")
             }
         }
         path.reverse()