diff --git a/examples/experimental_cc_shared_library.bzl b/examples/experimental_cc_shared_library.bzl
index dc63965..90b1cf5 100644
--- a/examples/experimental_cc_shared_library.bzl
+++ b/examples/experimental_cc_shared_library.bzl
@@ -143,21 +143,15 @@
         additional_inputs = depset(direct = linker_input.additional_inputs),
     )
 
-def _check_if_target_under_path(path, target, target_specified):
-    if not _same_package_or_above(path, target):
+def _check_if_target_under_path(value, pattern):
+    if pattern.workspace_name != value.workspace_name:
         return False
-    if target_specified:
-        return path.name == target.name
-    return True
+    if pattern.name == "__pkg__":
+        return pattern.package == value.package
+    if pattern.name == "__subpackages__":
+        return _same_package_or_above(pattern, value)
 
-def _is_target_specified(path):
-    if path.startswith("//") or path.startswith("@"):
-        if path.find(":") != -1:
-            return True
-        else:
-            return False
-    else:
-        return True
+    return pattern.package == value.package and pattern.name == value.name
 
 def _filter_inputs(
         ctx,
@@ -218,10 +212,9 @@
                 can_be_linked_statically = False
 
                 for static_dep_path in ctx.attr.static_deps:
-                    target_specified = _is_target_specified(static_dep_path)
                     static_dep_path_label = ctx.label.relative(static_dep_path)
                     owner_label = linker_input.owner
-                    if _check_if_target_under_path(linker_input.owner, static_dep_path_label, target_specified):
+                    if _check_if_target_under_path(linker_input.owner, static_dep_path_label):
                         can_be_linked_statically = True
                         break
                 if can_be_linked_statically:
@@ -267,9 +260,8 @@
 
         if not can_be_exported:
             for exported_by in export[GraphNodeInfo].exported_by:
-                target_specified = _is_target_specified(exported_by)
                 exported_by_label = Label(exported_by)
-                if _check_if_target_under_path(ctx.label, exported_by_label, target_specified):
+                if _check_if_target_under_path(ctx.label, exported_by_label):
                     can_be_exported = True
                     break
         if not can_be_exported:
@@ -393,3 +385,5 @@
     toolchains = ["@rules_cc//cc:toolchain_type"],  # copybara-use-repo-external-label
     fragments = ["cpp"],
 )
+
+for_testing_dont_use_check_if_target_under_path = _check_if_target_under_path
diff --git a/examples/test_cc_shared_library/BUILD b/examples/test_cc_shared_library/BUILD
index c3b2d6a..141b1aa 100644
--- a/examples/test_cc_shared_library/BUILD
+++ b/examples/test_cc_shared_library/BUILD
@@ -1,6 +1,6 @@
 load("//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
 load("//examples:experimental_cc_shared_library.bzl", "LINKABLE_MORE_THAN_ONCE", "cc_shared_library")
-load(":starlark_tests.bzl", "additional_inputs_test", "link_once_repeated_test", "linking_suffix_test")
+load(":starlark_tests.bzl", "additional_inputs_test", "link_once_repeated_test", "linking_suffix_test", "paths_test")
 
 package(
     default_visibility = ["//examples/test_cc_shared_library:__subpackages__"],
@@ -178,3 +178,7 @@
     name = "link_once_repeated_test",
     target_under_test = "//examples/test_cc_shared_library/failing_targets:should_fail_binary",
 )
+
+paths_test(
+    name = "path_matching_test",
+)
diff --git a/examples/test_cc_shared_library/starlark_tests.bzl b/examples/test_cc_shared_library/starlark_tests.bzl
index 9543df2..f301498 100644
--- a/examples/test_cc_shared_library/starlark_tests.bzl
+++ b/examples/test_cc_shared_library/starlark_tests.bzl
@@ -1,6 +1,7 @@
 """Starlark tests for cc_shared_library"""
 
-load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts")
+load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts", "unittest")
+load("//examples:experimental_cc_shared_library.bzl", "for_testing_dont_use_check_if_target_under_path")
 
 def _linking_suffix_test_impl(ctx):
     env = analysistest.begin(ctx)
@@ -43,3 +44,25 @@
     return analysistest.end(env)
 
 link_once_repeated_test = analysistest.make(_link_once_repeated_test_impl, expect_failure = True)
+
+def _paths_test_impl(ctx):
+    env = unittest.begin(ctx)
+
+    asserts.false(env, for_testing_dont_use_check_if_target_under_path(Label("//foo"), Label("//bar")))
+    asserts.false(env, for_testing_dont_use_check_if_target_under_path(Label("@foo//foo"), Label("@bar//bar")))
+    asserts.false(env, for_testing_dont_use_check_if_target_under_path(Label("//bar"), Label("@foo//bar")))
+    asserts.true(env, for_testing_dont_use_check_if_target_under_path(Label("@foo//bar"), Label("@foo//bar")))
+    asserts.true(env, for_testing_dont_use_check_if_target_under_path(Label("@foo//bar:bar"), Label("@foo//bar")))
+    asserts.true(env, for_testing_dont_use_check_if_target_under_path(Label("//bar:bar"), Label("//bar")))
+
+    asserts.false(env, for_testing_dont_use_check_if_target_under_path(Label("@foo//bar/baz"), Label("@foo//bar")))
+    asserts.false(env, for_testing_dont_use_check_if_target_under_path(Label("@foo//bar/baz"), Label("@foo//bar:__pkg__")))
+    asserts.true(env, for_testing_dont_use_check_if_target_under_path(Label("@foo//bar/baz"), Label("@foo//bar:__subpackages__")))
+    asserts.true(env, for_testing_dont_use_check_if_target_under_path(Label("@foo//bar:qux"), Label("@foo//bar:__pkg__")))
+
+    asserts.false(env, for_testing_dont_use_check_if_target_under_path(Label("@foo//bar"), Label("@foo//bar/baz:__subpackages__")))
+    asserts.false(env, for_testing_dont_use_check_if_target_under_path(Label("//bar"), Label("//bar/baz:__pkg__")))
+
+    return unittest.end(env)
+
+paths_test = unittest.make(_paths_test_impl)
