diff --git a/compiler/frontend/build.gradle.kts b/compiler/frontend/build.gradle.kts
index bdb134f..f967af1 100644
--- a/compiler/frontend/build.gradle.kts
+++ b/compiler/frontend/build.gradle.kts
@@ -17,7 +17,7 @@
     api(project(":compiler:frontend.common"))
     api(project(":compiler:frontend.common-psi"))
     api(project(":kotlin-script-runtime"))
-    api(libs.vavr)
+    api(commonDependency("io.javaslang","javaslang"))
     compileOnly(intellijCore())
     compileOnly(commonDependency("org.jetbrains.intellij.deps.fastutil:intellij-deps-fastutil"))
     compileOnly(libs.guava)
diff --git a/compiler/frontend/cfg/src/org/jetbrains/kotlin/cfg/ControlFlowInfo.kt b/compiler/frontend/cfg/src/org/jetbrains/kotlin/cfg/ControlFlowInfo.kt
index 41992cd..99e4ea4 100644
--- a/compiler/frontend/cfg/src/org/jetbrains/kotlin/cfg/ControlFlowInfo.kt
+++ b/compiler/frontend/cfg/src/org/jetbrains/kotlin/cfg/ControlFlowInfo.kt
@@ -16,8 +16,8 @@
 
 package org.jetbrains.kotlin.cfg
 
-import org.jetbrains.kotlin.util.vavr.ImmutableHashMap
-import org.jetbrains.kotlin.util.vavr.ImmutableMap
+import org.jetbrains.kotlin.util.javaslang.ImmutableHashMap
+import org.jetbrains.kotlin.util.javaslang.ImmutableMap
 
 interface ReadOnlyControlFlowInfo<K : Any, D : Any> {
     fun getOrNull(key: K): D?
@@ -54,4 +54,4 @@
     override fun hashCode() = map.hashCode()
 
     override fun toString() = map.toString()
-}
+}
\ No newline at end of file
diff --git a/compiler/frontend/cfg/src/org/jetbrains/kotlin/cfg/variable/PseudocodeVariablesData.kt b/compiler/frontend/cfg/src/org/jetbrains/kotlin/cfg/variable/PseudocodeVariablesData.kt
index fc0fd2d..f2a1ed2 100644
--- a/compiler/frontend/cfg/src/org/jetbrains/kotlin/cfg/variable/PseudocodeVariablesData.kt
+++ b/compiler/frontend/cfg/src/org/jetbrains/kotlin/cfg/variable/PseudocodeVariablesData.kt
@@ -21,7 +21,7 @@
 import org.jetbrains.kotlin.psi.*
 import org.jetbrains.kotlin.resolve.BindingContext
 import org.jetbrains.kotlin.resolve.BindingContextUtils.variableDescriptorForDeclaration
-import org.jetbrains.kotlin.util.vavr.*
+import org.jetbrains.kotlin.util.javaslang.*
 
 class PseudocodeVariablesData(val pseudocode: Pseudocode, private val bindingContext: BindingContext) {
     private val containsDoWhile = pseudocode.rootPseudocode.containsDoWhile
diff --git a/compiler/frontend/cfg/src/org/jetbrains/kotlin/cfg/variable/VariableControlFlowInfo.kt b/compiler/frontend/cfg/src/org/jetbrains/kotlin/cfg/variable/VariableControlFlowInfo.kt
index 88791b7..b1c036a 100644
--- a/compiler/frontend/cfg/src/org/jetbrains/kotlin/cfg/variable/VariableControlFlowInfo.kt
+++ b/compiler/frontend/cfg/src/org/jetbrains/kotlin/cfg/variable/VariableControlFlowInfo.kt
@@ -8,10 +8,10 @@
 import org.jetbrains.kotlin.cfg.ControlFlowInfo
 import org.jetbrains.kotlin.cfg.ReadOnlyControlFlowInfo
 import org.jetbrains.kotlin.descriptors.VariableDescriptor
-import org.jetbrains.kotlin.util.vavr.ImmutableHashMap
-import org.jetbrains.kotlin.util.vavr.ImmutableMap
-import org.jetbrains.kotlin.util.vavr.component1
-import org.jetbrains.kotlin.util.vavr.component2
+import org.jetbrains.kotlin.util.javaslang.ImmutableHashMap
+import org.jetbrains.kotlin.util.javaslang.ImmutableMap
+import org.jetbrains.kotlin.util.javaslang.component1
+import org.jetbrains.kotlin.util.javaslang.component2
 
 typealias VariableUsageReadOnlyControlInfo = ReadOnlyControlFlowInfo<VariableDescriptor, VariableUseState>
 typealias VariableUsageControlFlowInfo<S, D> = ControlFlowInfo<S, VariableDescriptor, D>
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/smartcasts/DataFlowInfo.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/smartcasts/DataFlowInfo.kt
index 79e2f04..b738f99 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/smartcasts/DataFlowInfo.kt
+++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/smartcasts/DataFlowInfo.kt
@@ -18,8 +18,8 @@
 
 import org.jetbrains.kotlin.config.LanguageVersionSettings
 import org.jetbrains.kotlin.types.KotlinType
-import org.jetbrains.kotlin.util.vavr.ImmutableMap
-import org.jetbrains.kotlin.util.vavr.ImmutableSet
+import org.jetbrains.kotlin.util.javaslang.ImmutableMap
+import org.jetbrains.kotlin.util.javaslang.ImmutableSet
 
 /**
  * This interface is intended to provide and edit information about value nullabilities and possible types.
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/smartcasts/DataFlowInfoImpl.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/smartcasts/DataFlowInfoImpl.kt
index 15b8cd0..9b50192 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/smartcasts/DataFlowInfoImpl.kt
+++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/smartcasts/DataFlowInfoImpl.kt
@@ -18,7 +18,7 @@
 
 import com.google.common.collect.LinkedHashMultimap
 import com.google.common.collect.SetMultimap
-import io.vavr.Tuple2
+import javaslang.Tuple2
 import org.jetbrains.kotlin.builtins.KotlinBuiltIns
 import org.jetbrains.kotlin.config.LanguageFeature
 import org.jetbrains.kotlin.config.LanguageVersionSettings
@@ -28,7 +28,7 @@
 import org.jetbrains.kotlin.types.typeUtil.contains
 import org.jetbrains.kotlin.types.typeUtil.isSubtypeOf
 import org.jetbrains.kotlin.types.typeUtil.makeNotNullable
-import org.jetbrains.kotlin.util.vavr.*
+import org.jetbrains.kotlin.util.javaslang.*
 import org.jetbrains.kotlin.utils.newLinkedHashSetWithExpectedSize
 import java.util.*
 
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/util/javaslang/javaslangAdapters.kt b/compiler/frontend/src/org/jetbrains/kotlin/util/javaslang/javaslangAdapters.kt
new file mode 100644
index 0000000..e1d8bc1
--- /dev/null
+++ b/compiler/frontend/src/org/jetbrains/kotlin/util/javaslang/javaslangAdapters.kt
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2010-2017 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.jetbrains.kotlin.util.javaslang
+
+import javaslang.Tuple2
+import javaslang.control.Option
+
+typealias ImmutableMap<K, V> = javaslang.collection.Map<K, V>
+typealias ImmutableHashMap<K, V> = javaslang.collection.HashMap<K, V>
+typealias ImmutableSet<E> = javaslang.collection.Set<E>
+typealias ImmutableHashSet<E> = javaslang.collection.HashSet<E>
+typealias ImmutableLinkedHashSet<E> = javaslang.collection.LinkedHashSet<E>
+
+operator fun <T> Tuple2<T, *>.component1(): T = _1()
+operator fun <T> Tuple2<*, T>.component2(): T = _2()
+
+fun <T> Option<T>.getOrNull(): T? = getOrElse(null as T?)
+fun <K, V> ImmutableMap<K, V>.getOrNull(k: K): V? = get(k)?.getOrElse(null as V?)
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/util/vavr/vavrAdapters.kt b/compiler/frontend/src/org/jetbrains/kotlin/util/vavr/vavrAdapters.kt
deleted file mode 100644
index f96e425..0000000
--- a/compiler/frontend/src/org/jetbrains/kotlin/util/vavr/vavrAdapters.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
- * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
- */
-
-package org.jetbrains.kotlin.util.vavr
-
-import io.vavr.Tuple2
-import io.vavr.control.Option
-
-typealias ImmutableMap<K, V> = io.vavr.collection.Map<K, V>
-typealias ImmutableHashMap<K, V> = io.vavr.collection.HashMap<K, V>
-typealias ImmutableSet<E> = io.vavr.collection.Set<E>
-typealias ImmutableHashSet<E> = io.vavr.collection.HashSet<E>
-typealias ImmutableLinkedHashSet<E> = io.vavr.collection.LinkedHashSet<E>
-
-operator fun <T> Tuple2<T, *>.component1(): T = _1()
-operator fun <T> Tuple2<*, T>.component2(): T = _2()
-
-fun <T> Option<T>.getOrNull(): T? = getOrElse(null as T?)
-fun <K, V> ImmutableMap<K, V>.getOrNull(k: K): V? = get(k)?.getOrElse(null as V?)
diff --git a/compiler/resolution.common.jvm/build.gradle.kts b/compiler/resolution.common.jvm/build.gradle.kts
index 7bac60e..d68a936 100644
--- a/compiler/resolution.common.jvm/build.gradle.kts
+++ b/compiler/resolution.common.jvm/build.gradle.kts
@@ -8,7 +8,7 @@
     api(project(":core:compiler.common.jvm"))
     api(project(":compiler:psi"))
     implementation(project(":compiler:util"))
-    implementation(libs.vavr)
+    implementation(commonDependency("io.javaslang","javaslang"))
     compileOnly(intellijCore())
     compileOnly(libs.kotlinx.coroutines.core.jvm)
     compileOnly(libs.intellij.asm)
diff --git a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/ClassifierResolutionContext.kt b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/ClassifierResolutionContext.kt
index 08d2642..95563ca 100644
--- a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/ClassifierResolutionContext.kt
+++ b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/ClassifierResolutionContext.kt
@@ -22,9 +22,9 @@
 import org.jetbrains.kotlin.name.ClassId
 import org.jetbrains.kotlin.name.FqName
 import org.jetbrains.kotlin.name.Name
-import org.jetbrains.kotlin.util.vavr.ImmutableHashMap
-import org.jetbrains.kotlin.util.vavr.ImmutableMap
-import org.jetbrains.kotlin.util.vavr.getOrNull
+import org.jetbrains.kotlin.util.javaslang.ImmutableHashMap
+import org.jetbrains.kotlin.util.javaslang.ImmutableMap
+import org.jetbrains.kotlin.util.javaslang.getOrNull
 import org.jetbrains.kotlin.utils.SmartList
 
 typealias ClassIdToJavaClass = (ClassId) -> JavaClass?
diff --git a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/util/javaslang/javaslangAdapters.kt b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/util/javaslang/javaslangAdapters.kt
new file mode 100644
index 0000000..bd0ad9b
--- /dev/null
+++ b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/util/javaslang/javaslangAdapters.kt
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2010-2017 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.jetbrains.kotlin.util.javaslang
+
+import javaslang.Tuple2
+import javaslang.control.Option
+
+internal typealias ImmutableMap<K, V> = javaslang.collection.Map<K, V>
+internal typealias ImmutableHashMap<K, V> = javaslang.collection.HashMap<K, V>
+internal typealias ImmutableSet<E> = javaslang.collection.Set<E>
+internal typealias ImmutableHashSet<E> = javaslang.collection.HashSet<E>
+internal typealias ImmutableLinkedHashSet<E> = javaslang.collection.LinkedHashSet<E>
+
+internal operator fun <T> Tuple2<T, *>.component1(): T = _1()
+internal operator fun <T> Tuple2<*, T>.component2(): T = _2()
+
+internal fun <T> Option<T>.getOrNull(): T? = getOrElse(null as T?)
+internal fun <K, V> ImmutableMap<K, V>.getOrNull(k: K): V? = get(k)?.getOrElse(null as V?)
diff --git a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/util/vavr/vavrAdapters.kt b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/util/vavr/vavrAdapters.kt
deleted file mode 100644
index 37bd8ea..0000000
--- a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/util/vavr/vavrAdapters.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
- * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
- */
-
-package org.jetbrains.kotlin.util.vavr
-
-import io.vavr.Tuple2
-import io.vavr.control.Option
-
-internal typealias ImmutableMap<K, V> = io.vavr.collection.Map<K, V>
-internal typealias ImmutableHashMap<K, V> = io.vavr.collection.HashMap<K, V>
-internal typealias ImmutableSet<E> = io.vavr.collection.Set<E>
-internal typealias ImmutableHashSet<E> = io.vavr.collection.HashSet<E>
-internal typealias ImmutableLinkedHashSet<E> = io.vavr.collection.LinkedHashSet<E>
-
-internal operator fun <T> Tuple2<T, *>.component1(): T = _1()
-internal operator fun <T> Tuple2<*, T>.component2(): T = _2()
-
-internal fun <T> Option<T>.getOrNull(): T? = getOrElse(null as T?)
-internal fun <K, V> ImmutableMap<K, V>.getOrNull(k: K): V? = get(k)?.getOrElse(null as V?)
diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/cfg/AbstractDataFlowTest.java b/compiler/tests-common/tests/org/jetbrains/kotlin/cfg/AbstractDataFlowTest.java
index f63a2fe..265d8cf 100644
--- a/compiler/tests-common/tests/org/jetbrains/kotlin/cfg/AbstractDataFlowTest.java
+++ b/compiler/tests-common/tests/org/jetbrains/kotlin/cfg/AbstractDataFlowTest.java
@@ -18,7 +18,7 @@
 
 import com.google.common.collect.Lists;
 import com.intellij.openapi.util.text.StringUtil;
-import io.vavr.Tuple2;
+import javaslang.Tuple2;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.kotlin.cfg.pseudocode.PseudocodeImpl;
 import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction;
@@ -101,7 +101,7 @@
     }
 
     private static <S> String renderVariableMap(
-            io.vavr.collection.Map<VariableDescriptor, S> map,
+            javaslang.collection.Map<VariableDescriptor, S> map,
             PseudocodeVariablesData variablesData
     ) {
         List<String> result = Lists.newArrayList();
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index b171afb..9f55e64 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -43,7 +43,6 @@
 diff-utils = "4.12"
 # Wasm specific
 wasmedge = "0.14.0"
-vavr = "0.10.4"
 
 [libraries]
 dexMemberList = { module = "com.jakewharton.dex:dex-member-list", version.ref = "dexMemberList" }
@@ -74,7 +73,6 @@
 jackson-module-kotlin = { module = "com.fasterxml.jackson.module:jackson-module-kotlin", version.ref = "jackson" }
 gson = { module = "com.google.code.gson:gson", version.ref = "gson" }
 guava = { module = "com.google.guava:guava", version.ref = "guava" }
-vavr = { module = "io.vavr:vavr", version.ref = "vavr" }
 jetbrains-ideaExt-gradlePlugin = { module = "gradle.plugin.org.jetbrains.gradle.plugin.idea-ext:gradle-idea-ext", version.ref = "jetbrains-ideaExt" }
 jdom2 = { module = "org.jdom:jdom2", version.ref = "jdom2" }
 jgit = { module = "org.eclipse.jgit:org.eclipse.jgit", version.ref = "jgit" }
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index c045ad5..baa988f 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -1960,6 +1960,18 @@
             <sha256 value="c85782e20da6eadbf07537f35d52bf2abafd891ae14c27b7d36a4d450575eeb3" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="io.javaslang" name="javaslang" version="2.0.6">
+         <artifact name="javaslang-2.0.6.jar">
+            <md5 value="cde4c568bc0c4721577ddcf25f12ccbb" origin="Generated by Gradle"/>
+            <sha256 value="b92286634df04984ce524e659fcfc270632ff2997190c48a0f7d671c3300568e" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
+      <component group="io.javaslang" name="javaslang-match" version="2.0.6">
+         <artifact name="javaslang-match-2.0.6.jar">
+            <md5 value="e3156a90eb15cb1698cb1a7dccfe38c1" origin="Generated by Gradle"/>
+            <sha256 value="15a73eba2858834ad08ca2cd1c39b35b02940fd22a7d5a22de998b8b318d400b" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="io.ktor" name="ktor-client-apache-jvm" version="2.3.7">
          <artifact name="ktor-client-apache-jvm-2.3.7.jar">
             <md5 value="96532c3b8d9506962518adcedeb0ce07" origin="Generated by Gradle"/>
@@ -2494,18 +2506,6 @@
             <sha256 value="c705b5c10c18ff3032b9e81742bc2f6b0e5607f6a6dfc0c8ad0cff75d4913042" origin="Generated by Gradle"/>
          </artifact>
       </component>
-      <component group="io.vavr" name="vavr" version="0.10.4">
-         <artifact name="vavr-0.10.4.jar">
-            <md5 value="969dc757cef8441586b5457f80671a8f" origin="Generated by Gradle"/>
-            <sha256 value="12622deeea2618b59b284051a9484f1def8ccbebc847c350358f12d325ba9dd5" origin="Generated by Gradle"/>
-         </artifact>
-      </component>
-      <component group="io.vavr" name="vavr-match" version="0.10.4">
-         <artifact name="vavr-match-0.10.4.jar">
-            <md5 value="11b81a0fa77663cd0f7a4264ba8d6475" origin="Generated by Gradle"/>
-            <sha256 value="d46f96bf59ccd5800261eec5869a6877ee0a37ea781312e6735be55539f50354" origin="Generated by Gradle"/>
-         </artifact>
-      </component>
       <component group="it.unimi.dsi" name="fastutil" version="8.5.11">
          <artifact name="fastutil-8.5.11.jar">
             <md5 value="3d3de46ca61c725be4d67af295f05131" origin="Generated by Gradle"/>
diff --git a/gradle/versions.properties b/gradle/versions.properties
index c447fd1..ab9e6e0 100644
--- a/gradle/versions.properties
+++ b/gradle/versions.properties
@@ -26,7 +26,7 @@
 versions.android=2.3.1
 versions.ant=1.10.7
 versions.jansi=2.4.0
-versions.vavr=0.10.4
+versions.javaslang=2.0.6
 versions.javax.inject=1
 versions.jflex=1.7.0
 versions.jline=3.24.1
diff --git a/prepare/compiler/build.gradle.kts b/prepare/compiler/build.gradle.kts
index b58fe70..3c11953 100644
--- a/prepare/compiler/build.gradle.kts
+++ b/prepare/compiler/build.gradle.kts
@@ -225,7 +225,7 @@
     fatJarContents(commonDependency("org.fusesource.jansi", "jansi"))
     fatJarContents(protobufFull())
     fatJarContents(commonDependency("com.google.code.findbugs", "jsr305"))
-    fatJarContents(libs.vavr)
+    fatJarContents(commonDependency("io.javaslang", "javaslang"))
     fatJarContents(commonDependency("org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm")) { isTransitive = false }
 
     fatJarContents(intellijCore())
diff --git a/prepare/compiler/compiler.pro b/prepare/compiler/compiler.pro
index 94f71ee..c6958385 100644
--- a/prepare/compiler/compiler.pro
+++ b/prepare/compiler/compiler.pro
@@ -26,7 +26,9 @@
 -dontwarn com.sun.jna.WString
 -dontwarn dk.brics.automaton.*
 -dontwarn java.lang.invoke.MethodHandle
--dontwarn io.vavr.*
+-dontwarn javaslang.*
+-dontwarn javaslang.match.annotation.Patterns
+-dontwarn javaslang.match.annotation.Unapply
 -dontwarn javax.crypto.**
 -dontwarn kotlinx.collections.immutable.*
 -dontwarn kotlinx.collections.immutable.**
@@ -189,6 +191,7 @@
 -keep class gnu.trove.TIntHashSet { *; }
 -keep class gnu.trove.TIntIterator { *; }
 -keep class org.iq80.snappy.SlowMemory { *; }
+-keep class javaslang.match.PatternsProcessor { *; }
 
 -keepclassmembers enum * {
     public static **[] values();
@@ -364,4 +367,4 @@
     public static com.intellij.util.indexing.FileContent createByFile(com.intellij.openapi.vfs.VirtualFile);
 }
 # Uses a ClassLoader method from JDK 9+
--dontwarn org.jetbrains.kotlin.buildtools.internal.ClassLoaderUtilsKt
+-dontwarn org.jetbrains.kotlin.buildtools.internal.ClassLoaderUtilsKt
\ No newline at end of file
diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/embeddable.kt b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/embeddable.kt
index 5203303..708811e 100644
--- a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/embeddable.kt
+++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/embeddable.kt
@@ -43,7 +43,7 @@
         "META-INF/**",
         "com/sun/jna/**",
         "com/thoughtworks/xstream/**",
-        "io/vavr/**",
+        "javaslang/**",
         "*.proto",
         "messages/**",
         "net/sf/cglib/**",
