More tests
diff --git a/src/test/starlark/rules/arrangement.bzl b/src/test/starlark/rules/arrangement.bzl
index eeb7532..19b8196 100644
--- a/src/test/starlark/rules/arrangement.bzl
+++ b/src/test/starlark/rules/arrangement.bzl
@@ -1,9 +1,20 @@
 load("//kotlin:jvm.bzl", "kt_jvm_import", "kt_jvm_library")
 
-def arrange(test):
-    dependency_a_trans_dep_jar = test.artifact(
-        name = "dependency_a_trans_dep.abi.jar",
-    )
+def arrange(test, transitive_dep = None):
+    dependency_a_trans_dep_jar = transitive_dep
+    if dependency_a_trans_dep_jar == None:
+        dependency_a_trans_dep_jar = test.artifact(
+            name = "dependency_a_trans_dep.abi.jar",
+        )
+        dependency_a_trans_dep = test.have(
+            kt_jvm_import,
+            name = "dependency_a_dep_jar_import",
+            jars = [
+                dependency_a_trans_dep_jar,
+            ],
+        )
+    else:
+        dependency_a_trans_dep = dependency_a_trans_dep_jar
 
     dependency_a = test.have(
         kt_jvm_library,
@@ -14,13 +25,7 @@
             ),
         ],
         deps = [
-            test.have(
-                kt_jvm_import,
-                name = "dependency_a_dep_jar_import",
-                jars = [
-                    dependency_a_trans_dep_jar,
-                ],
-            ),
+            dependency_a_trans_dep,
         ],
     )
 
diff --git a/src/test/starlark/rules/experimental_prune_transitive_deps_tests.bzl b/src/test/starlark/rules/experimental_prune_transitive_deps_tests.bzl
index 618829a..bc441f5 100644
--- a/src/test/starlark/rules/experimental_prune_transitive_deps_tests.bzl
+++ b/src/test/starlark/rules/experimental_prune_transitive_deps_tests.bzl
@@ -4,6 +4,10 @@
 load(":arrangement.bzl", "arrange")
 load(":util.bzl", "abi_jar_of", "basename_of", "values_for_flag_of")
 
+_MAVEN_COMPILE_JAR_BASENAME = "header_javax.inject-1.jar"
+_MAVEN_REPOSITORY_NAME = "rules_jvm_external++maven+kotlin_rules_maven"
+_MAVEN_TRANSITIVE_DEP = Label("@kotlin_rules_maven//:javax_inject_javax_inject")
+
 def _classpath_assertions_(env, target):
     action = env.expect.that_target(target).action_named(env.ctx.attr.on_action_mnemonic)
 
@@ -20,10 +24,14 @@
     action.inputs().contains_at_least_predicates(want_input_matchers)
 
     # For classpath (string paths), use str_endswith matcher to match by basename
-    want_classpath_basenames = [abi_jar_of(f.basename) for f in env.ctx.files.want_classpath if not f.basename.endswith("jdeps")]
+    want_classpath_basenames = [
+        abi_jar_of(f.basename)
+        for f in env.ctx.files.want_classpath
+        if not f.basename.endswith("jdeps")
+    ] + env.ctx.attr.want_classpath_basenames
     values_for_flag_of(action, "--classpath").transform(desc = "basenames", map_each = basename_of).contains_at_least(want_classpath_basenames)
 
-    not_want_basenames = [f.basename for f in env.ctx.files.not_want_classpath]
+    not_want_basenames = [f.basename for f in env.ctx.files.not_want_classpath] + env.ctx.attr.not_want_classpath_basenames
     values_for_flag_of(action, "--classpath").transform(desc = "basenames", map_each = basename_of).contains_none_of(not_want_basenames)
 
 def _test_classpath_experimental_prune_transitive_deps_False(test):
@@ -35,15 +43,18 @@
         target = main_target_library,
         config_settings = {
             str(Label("@rules_kotlin//kotlin/settings:experimental_prune_transitive_deps")): False,
+            str(Label("@rules_kotlin//kotlin/settings:experimental_prune_transitive_deps_keep_transitive_repositories")): [],
             str(Label("@rules_kotlin//kotlin/settings:experimental_strict_associate_dependencies")): False,
         },
         attr_values = {
             "not_want_classpath": [],
+            "not_want_classpath_basenames": [],
             "on_action_mnemonic": "KotlinCompile",
             "want_classpath": [
                 dependency_a,
                 dependency_a_trans_dep_jar,
             ],
+            "want_classpath_basenames": [],
             "want_direct_dependencies": [
                 dependency_a,
                 dependency_a_trans_dep_jar,
@@ -55,8 +66,10 @@
         },
         attrs = {
             "not_want_classpath": attr.label_list(providers = [DefaultInfo], allow_files = True),
+            "not_want_classpath_basenames": attr.string_list(),
             "on_action_mnemonic": attr.string(),
             "want_classpath": attr.label_list(providers = [DefaultInfo], allow_files = True),
+            "want_classpath_basenames": attr.string_list(),
             "want_direct_dependencies": attr.label_list(providers = [DefaultInfo], allow_files = True),
             "want_inputs": attr.label_list(providers = [DefaultInfo], allow_files = True),
         },
@@ -71,16 +84,59 @@
         target = main_target_library,
         config_settings = {
             str(Label("@rules_kotlin//kotlin/settings:experimental_prune_transitive_deps")): True,
+            str(Label("@rules_kotlin//kotlin/settings:experimental_prune_transitive_deps_keep_transitive_repositories")): [],
             str(Label("@rules_kotlin//kotlin/settings:experimental_strict_associate_dependencies")): False,
         },
         attr_values = {
             "not_want_classpath": [
                 dependency_a_trans_dep_jar,
             ],
+            "not_want_classpath_basenames": [],
             "on_action_mnemonic": "KotlinCompile",
             "want_classpath": [
                 dependency_a,
             ],
+            "want_classpath_basenames": [],
+            "want_direct_dependencies": [
+                dependency_a,
+            ],
+            "want_inputs": [
+                dependency_a,
+            ],
+        },
+        attrs = {
+            "not_want_classpath": attr.label_list(providers = [DefaultInfo], allow_files = True),
+            "not_want_classpath_basenames": attr.string_list(),
+            "on_action_mnemonic": attr.string(),
+            "want_classpath": attr.label_list(providers = [DefaultInfo], allow_files = True),
+            "want_classpath_basenames": attr.string_list(),
+            "want_direct_dependencies": attr.label_list(providers = [DefaultInfo], allow_files = True),
+            "want_inputs": attr.label_list(providers = [DefaultInfo], allow_files = True),
+        },
+    )
+
+def _test_classpath_experimental_prune_transitive_deps_keep_maven_repository(test):
+    (_, dependency_a, main_target_library) = arrange(test, transitive_dep = _MAVEN_TRANSITIVE_DEP)
+
+    analysis_test(
+        name = test.name,
+        impl = _classpath_assertions_,
+        target = main_target_library,
+        config_settings = {
+            str(Label("@rules_kotlin//kotlin/settings:experimental_prune_transitive_deps")): True,
+            str(Label("@rules_kotlin//kotlin/settings:experimental_prune_transitive_deps_keep_transitive_repositories")): [_MAVEN_REPOSITORY_NAME],
+            str(Label("@rules_kotlin//kotlin/settings:experimental_strict_associate_dependencies")): False,
+        },
+        attr_values = {
+            "not_want_classpath": [],
+            "not_want_classpath_basenames": [],
+            "on_action_mnemonic": "KotlinCompile",
+            "want_classpath": [
+                dependency_a,
+            ],
+            "want_classpath_basenames": [
+                _MAVEN_COMPILE_JAR_BASENAME,
+            ],
             "want_direct_dependencies": [
                 dependency_a,
             ],
@@ -90,8 +146,50 @@
         },
         attrs = {
             "not_want_classpath": attr.label_list(providers = [DefaultInfo], allow_files = True),
+            "not_want_classpath_basenames": attr.string_list(),
             "on_action_mnemonic": attr.string(),
             "want_classpath": attr.label_list(providers = [DefaultInfo], allow_files = True),
+            "want_classpath_basenames": attr.string_list(),
+            "want_direct_dependencies": attr.label_list(providers = [DefaultInfo], allow_files = True),
+            "want_inputs": attr.label_list(providers = [DefaultInfo], allow_files = True),
+        },
+    )
+
+def _test_classpath_experimental_prune_transitive_deps_prune_unmatched_maven_repository(test):
+    (_, dependency_a, main_target_library) = arrange(test, transitive_dep = _MAVEN_TRANSITIVE_DEP)
+
+    analysis_test(
+        name = test.name,
+        impl = _classpath_assertions_,
+        target = main_target_library,
+        config_settings = {
+            str(Label("@rules_kotlin//kotlin/settings:experimental_prune_transitive_deps")): True,
+            str(Label("@rules_kotlin//kotlin/settings:experimental_prune_transitive_deps_keep_transitive_repositories")): ["other_maven_repository"],
+            str(Label("@rules_kotlin//kotlin/settings:experimental_strict_associate_dependencies")): False,
+        },
+        attr_values = {
+            "not_want_classpath": [],
+            "not_want_classpath_basenames": [
+                _MAVEN_COMPILE_JAR_BASENAME,
+            ],
+            "on_action_mnemonic": "KotlinCompile",
+            "want_classpath": [
+                dependency_a,
+            ],
+            "want_classpath_basenames": [],
+            "want_direct_dependencies": [
+                dependency_a,
+            ],
+            "want_inputs": [
+                dependency_a,
+            ],
+        },
+        attrs = {
+            "not_want_classpath": attr.label_list(providers = [DefaultInfo], allow_files = True),
+            "not_want_classpath_basenames": attr.string_list(),
+            "on_action_mnemonic": attr.string(),
+            "want_classpath": attr.label_list(providers = [DefaultInfo], allow_files = True),
+            "want_classpath_basenames": attr.string_list(),
             "want_direct_dependencies": attr.label_list(providers = [DefaultInfo], allow_files = True),
             "want_inputs": attr.label_list(providers = [DefaultInfo], allow_files = True),
         },
@@ -101,5 +199,7 @@
     suite(
         name,
         enabled = _test_classpath_experimental_prune_transitive_deps_True,
+        enabled_keep_maven_repository = _test_classpath_experimental_prune_transitive_deps_keep_maven_repository,
+        enabled_prune_unmatched_maven_repository = _test_classpath_experimental_prune_transitive_deps_prune_unmatched_maven_repository,
         disabled = _test_classpath_experimental_prune_transitive_deps_False,
     )