diff --git a/src/test/java/com/google/devtools/build/android/AaptCommandBuilderTest.java b/src/test/java/com/google/devtools/build/android/AaptCommandBuilderTest.java
index 6d6c0cf..9aed5ce 100644
--- a/src/test/java/com/google/devtools/build/android/AaptCommandBuilderTest.java
+++ b/src/test/java/com/google/devtools/build/android/AaptCommandBuilderTest.java
@@ -290,7 +290,7 @@
             new AaptCommandBuilder(aapt)
                 .addParameterableRepeated("-R", resources, workingDirectory)
                 .build())
-        .containsAllOf("-R", "@" + workingDirectory.resolve("params-R"));
+        .containsAtLeast("-R", "@" + workingDirectory.resolve("params-R"));
     assertThat(
             Files.readAllLines(workingDirectory.resolve("params-R"), StandardCharsets.UTF_8)
                 .stream()
diff --git a/src/test/java/com/google/devtools/build/android/ConvertersTest.java b/src/test/java/com/google/devtools/build/android/ConvertersTest.java
index 4e8f705..f7fc270 100644
--- a/src/test/java/com/google/devtools/build/android/ConvertersTest.java
+++ b/src/test/java/com/google/devtools/build/android/ConvertersTest.java
@@ -86,7 +86,7 @@
   public void testPathListConverter() throws Exception {
     PathListConverter converter = new PathListConverter();
     assertThat(converter.convert("foo:bar::baz:"))
-        .containsAllOf(Paths.get("foo"), Paths.get("bar"), Paths.get("baz"))
+        .containsAtLeast(Paths.get("foo"), Paths.get("bar"), Paths.get("baz"))
         .inOrder();
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapperTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapperTest.java
index 8bb0dee..cc91b1e 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapperTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapperTest.java
@@ -120,7 +120,7 @@
 
   @Test
   public void getAttributeNames() throws Exception {
-    assertThat(mapper.getAttributeNames()).containsAllOf("srcs", "linkstatic", "fromaspect");
+    assertThat(mapper.getAttributeNames()).containsAtLeast("srcs", "linkstatic", "fromaspect");
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplateTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplateTest.java
index 56ed076..87bef3d 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplateTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplateTest.java
@@ -85,8 +85,8 @@
         .addCommonInputs(ImmutableList.of(commonInput))
         .build(ActionsTestUtil.NULL_ACTION_OWNER);
 
-    assertThat(actionTemplate.getTools()).containsAllOf(commonTool, executable);
-    assertThat(actionTemplate.getInputs()).containsAllOf(commonInput, commonTool, executable);
+    assertThat(actionTemplate.getTools()).containsAtLeast(commonTool, executable);
+    assertThat(actionTemplate.getInputs()).containsAtLeast(commonInput, commonTool, executable);
   }
 
   @Test
@@ -249,9 +249,9 @@
                 inputTreeFileArtifacts, ArtifactOwner.NullArtifactOwner.INSTANCE));
 
     for (int i = 0; i < expandedActions.size(); ++i) {
-      assertThat(expandedActions.get(i).getInputs()).containsAllOf(
-          commonInput, commonTool, executable);
-      assertThat(expandedActions.get(i).getTools()).containsAllOf(commonTool, executable);
+      assertThat(expandedActions.get(i).getInputs())
+          .containsAtLeast(commonInput, commonTool, executable);
+      assertThat(expandedActions.get(i).getTools()).containsAtLeast(commonTool, executable);
     }
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRuleConfiguredTargetTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRuleConfiguredTargetTest.java
index 3c86efe..f3ca1f4 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRuleConfiguredTargetTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRuleConfiguredTargetTest.java
@@ -543,7 +543,7 @@
   private void assertStamped(ConfiguredTarget target) throws Exception {
     Artifact out = Iterables.getFirst(getFilesToBuild(target), null);
     List<String> inputs = ActionsTestUtil.baseArtifactNames(getGeneratingAction(out).getInputs());
-    assertThat(inputs).containsAllOf("build-info.txt", "build-changelist.txt");
+    assertThat(inputs).containsAtLeast("build-info.txt", "build-changelist.txt");
   }
 
   private void assertNotStamped(ConfiguredTarget target) throws Exception {
diff --git a/src/test/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicyTest.java b/src/test/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicyTest.java
index 09ca8fb..a5859c3 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicyTest.java
@@ -102,7 +102,8 @@
                 ImmutableSet.<Class<?>>of(Long.class))
             .build();
 
-    assertThat(policy.getRequiredConfigurationFragments()).containsAllOf(Integer.class, Long.class);
+    assertThat(policy.getRequiredConfigurationFragments())
+        .containsAtLeast(Integer.class, Long.class);
 
     assertThat(policy.isLegalConfigurationFragment(Integer.class)).isTrue();
     assertThat(
diff --git a/src/test/java/com/google/devtools/build/lib/query2/engine/AbstractQueryTest.java b/src/test/java/com/google/devtools/build/lib/query2/engine/AbstractQueryTest.java
index e37c30c..c985f48 100644
--- a/src/test/java/com/google/devtools/build/lib/query2/engine/AbstractQueryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/query2/engine/AbstractQueryTest.java
@@ -546,7 +546,7 @@
         "        cmd = 'echo $(SRCS) >$@')");
 
     List<String> result = evalToListOfStrings("deps(//s:my_rule)");
-    assertThat(result).containsAllOf("//s:dep2", "//s:dep1.txt", "//s:dep2.txt", "//s:my_rule");
+    assertThat(result).containsAtLeast("//s:dep2", "//s:dep1.txt", "//s:dep2.txt", "//s:my_rule");
     assertThat(result)
         .containsNoneOf("//deps:BUILD", "//deps:build_def", "//deps:skylark.bzl", "//s:BUILD");
   }
diff --git a/src/test/java/com/google/devtools/build/lib/remote/GrpcRemoteCacheTest.java b/src/test/java/com/google/devtools/build/lib/remote/GrpcRemoteCacheTest.java
index 3338450..d371452 100644
--- a/src/test/java/com/google/devtools/build/lib/remote/GrpcRemoteCacheTest.java
+++ b/src/test/java/com/google/devtools/build/lib/remote/GrpcRemoteCacheTest.java
@@ -620,7 +620,8 @@
           public void findMissingBlobs(
               FindMissingBlobsRequest request,
               StreamObserver<FindMissingBlobsResponse> responseObserver) {
-            assertThat(request.getBlobDigestsList()).containsAllOf(fooDigest, quxDigest, barDigest);
+            assertThat(request.getBlobDigestsList())
+                .containsAtLeast(fooDigest, quxDigest, barDigest);
             // Nothing is missing.
             responseObserver.onNext(FindMissingBlobsResponse.getDefaultInstance());
             responseObserver.onCompleted();
@@ -698,7 +699,7 @@
               FindMissingBlobsRequest request,
               StreamObserver<FindMissingBlobsResponse> responseObserver) {
             assertThat(request.getBlobDigestsList())
-                .containsAllOf(quxDigest, barDigest, wobbleDigest);
+                .containsAtLeast(quxDigest, barDigest, wobbleDigest);
             // Nothing is missing.
             responseObserver.onNext(FindMissingBlobsResponse.getDefaultInstance());
             responseObserver.onCompleted();
diff --git a/src/test/java/com/google/devtools/build/lib/remote/SimpleBlobStoreActionCacheTest.java b/src/test/java/com/google/devtools/build/lib/remote/SimpleBlobStoreActionCacheTest.java
index b1d0480..5b7b0de 100644
--- a/src/test/java/com/google/devtools/build/lib/remote/SimpleBlobStoreActionCacheTest.java
+++ b/src/test/java/com/google/devtools/build/lib/remote/SimpleBlobStoreActionCacheTest.java
@@ -430,7 +430,7 @@
     assertThat(result).isEqualTo(expectedResult.build());
 
     assertThat(map.keySet())
-        .containsAllOf(wobbleDigest.getHash(), quxDigest.getHash(), barDigest.getHash());
+        .containsAtLeast(wobbleDigest.getHash(), quxDigest.getHash(), barDigest.getHash());
   }
 
   private ActionResult uploadDirectory(SimpleBlobStoreActionCache client, List<Path> outputs)
diff --git a/src/test/java/com/google/devtools/build/lib/repository/ExternalPackageUtilTest.java b/src/test/java/com/google/devtools/build/lib/repository/ExternalPackageUtilTest.java
index 4786753..e427037 100644
--- a/src/test/java/com/google/devtools/build/lib/repository/ExternalPackageUtilTest.java
+++ b/src/test/java/com/google/devtools/build/lib/repository/ExternalPackageUtilTest.java
@@ -214,7 +214,7 @@
 
     assertThat(result.get(key).registeredToolchains())
         // There are default toolchains that are always registered, so just check for the ones added
-        .containsAllOf("//toolchain:tc1", "//toolchain:tc2")
+        .containsAtLeast("//toolchain:tc1", "//toolchain:tc2")
         .inOrder();
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/rules/apple/SwiftConfigurationTest.java b/src/test/java/com/google/devtools/build/lib/rules/apple/SwiftConfigurationTest.java
index f4c515d..6b1c65e 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/apple/SwiftConfigurationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/apple/SwiftConfigurationTest.java
@@ -77,7 +77,7 @@
     @SuppressWarnings("unchecked")
     List<String> copts = (List<String>) getMyInfoFromTarget(skylarkTarget).getValue("copts");
 
-    assertThat(copts).containsAllOf("foo", "bar");
+    assertThat(copts).containsAtLeast("foo", "bar");
   }
 
   @Test
@@ -111,6 +111,6 @@
     List<String> copts = (List<String>) getMyInfoFromTarget(target).getValue("copts");
 
     assertThat(copts).doesNotContain("foo");
-    assertThat(copts).containsAllOf("bar", "baz");
+    assertThat(copts).containsAtLeast("bar", "baz");
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java
index 41f37db..d70cd05 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java
@@ -1530,7 +1530,7 @@
     JavaCompilationArgsProvider jlExportsProvider =
         JavaInfo.getProvider(JavaCompilationArgsProvider.class, jlExports);
     assertThat(prettyArtifactNames(jlExportsProvider.getRuntimeJars()))
-        .containsAllOf(
+        .containsAtLeast(
             "foo/libjl_bottom_for_deps.jar",
             "foo/libjl_bottom_for_runtime_deps.jar",
             "foo/libjl_bottom_for_exports.jar");
@@ -1567,7 +1567,7 @@
     assertThat(
             prettyArtifactNames(
                 binary.getProvider(JavaRuntimeClasspathProvider.class).getRuntimeClasspath()))
-        .containsAllOf("foo/libjl_bottom_for_deps.jar", "foo/libjl_bottom_for_runtime_deps.jar");
+        .containsAtLeast("foo/libjl_bottom_for_deps.jar", "foo/libjl_bottom_for_runtime_deps.jar");
   }
 
   @Test
@@ -1593,7 +1593,7 @@
     JavaCompilationArgsProvider compilationProvider =
         JavaInfo.getProvider(JavaCompilationArgsProvider.class, importTarget);
     assertThat(prettyArtifactNames(compilationProvider.getRuntimeJars()))
-        .containsAllOf("foo/libjl_bottom_for_deps.jar", "foo/libjl_bottom_for_runtime_deps.jar");
+        .containsAtLeast("foo/libjl_bottom_for_deps.jar", "foo/libjl_bottom_for_runtime_deps.jar");
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java
index 9d96f2c..302e166 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java
@@ -165,7 +165,7 @@
             .getRemainingArguments();
 
     assertThat(args)
-        .containsAllOf(
+        .containsAtLeast(
             "--java_out=lite,immutable,no_enforce_api_compatibility:"
                 + genfilesDir
                 + "/x/protolib-lite-src.jar",
@@ -247,7 +247,7 @@
     List<String> args =
         getGeneratingSpawnAction(litepb2, "cross/bravo-lite-src.jar").getRemainingArguments();
     assertThat(args)
-        .containsAllOf(
+        .containsAtLeast(
             "--java_out=lite,immutable,no_enforce_api_compatibility:"
                 + genfilesDir
                 + "/cross/bravo-lite-src.jar",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibraryTest.java
index 5bfe622..0994aa5 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibraryTest.java
@@ -68,7 +68,7 @@
     Artifact file = getDescriptorOutput("//x:foo");
 
     assertThat(getGeneratingSpawnAction(file).getRemainingArguments())
-        .containsAllOf(
+        .containsAtLeast(
             "-Ix/foo.proto=x/foo.proto",
             "--descriptor_set_out=" + file.getExecPathString(),
             "x/foo.proto");
@@ -192,18 +192,18 @@
         "proto_library(name='dep2', srcs=['dep2.proto'])");
 
     assertThat(getGeneratingSpawnAction(getDescriptorOutput("//x:nodeps")).getRemainingArguments())
-        .containsAllOf("--direct_dependencies", "x/nodeps.proto")
+        .containsAtLeast("--direct_dependencies", "x/nodeps.proto")
         .inOrder();
 
     assertThat(
             getGeneratingSpawnAction(getDescriptorOutput("//x:withdeps")).getRemainingArguments())
-        .containsAllOf("--direct_dependencies", "x/dep1.proto:x/dep2.proto:x/withdeps.proto")
+        .containsAtLeast("--direct_dependencies", "x/dep1.proto:x/dep2.proto:x/withdeps.proto")
         .inOrder();
 
     assertThat(
             getGeneratingSpawnAction(getDescriptorOutput("//x:depends_on_alias"))
                 .getRemainingArguments())
-        .containsAllOf(
+        .containsAtLeast(
             "--direct_dependencies", "x/dep1.proto:x/dep2.proto:x/depends_on_alias.proto")
         .inOrder();
   }
@@ -223,7 +223,7 @@
     assertThat(file.getRootRelativePathString()).isEqualTo("x/foo-descriptor-set.proto.bin");
 
     assertThat(getGeneratingSpawnAction(file).getRemainingArguments())
-        .containsAllOf("--direct_dependencies", "x/foo.proto:x/bar.proto")
+        .containsAtLeast("--direct_dependencies", "x/foo.proto:x/bar.proto")
         .inOrder();
   }
 
@@ -621,7 +621,7 @@
         "    strip_import_prefix = 'c')");
 
     Iterable<String> commandLine = paramFileArgsForAction(getDescriptorWriteAction("//a/b:d"));
-    assertThat(commandLine).containsAllOf("--direct_dependencies", "d.proto:e.proto").inOrder();
+    assertThat(commandLine).containsAtLeast("--direct_dependencies", "d.proto:e.proto").inOrder();
   }
 
   @Test
@@ -646,7 +646,7 @@
 
     Iterable<String> commandLine = paramFileArgsForAction(getDescriptorWriteAction("//a/b/e:e"));
     assertThat(commandLine)
-        .containsAllOf("--direct_dependencies", "d.proto:a/b/e/e.proto")
+        .containsAtLeast("--direct_dependencies", "d.proto:a/b/e/e.proto")
         .inOrder();
   }
 
@@ -666,7 +666,7 @@
         "    strip_import_prefix = 'c')");
 
     Iterable<String> commandLine = paramFileArgsForAction(getDescriptorWriteAction("//a/b:d"));
-    assertThat(commandLine).containsAllOf("--direct_dependencies", "foo/d.proto").inOrder();
+    assertThat(commandLine).containsAtLeast("--direct_dependencies", "foo/d.proto").inOrder();
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilderTest.java b/src/test/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilderTest.java
index 99ea06c..cc40ab7 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilderTest.java
@@ -267,7 +267,7 @@
             Services.DISALLOW,
             /* protocOpts= */ ImmutableList.of("--foo", "--bar"));
 
-    assertThat(cmdLine.arguments()).containsAllOf("--disallow_services", "--foo", "--bar");
+    assertThat(cmdLine.arguments()).containsAtLeast("--disallow_services", "--foo", "--bar");
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/rules/python/PythonStarlarkApiTest.java b/src/test/java/com/google/devtools/build/lib/rules/python/PythonStarlarkApiTest.java
index 44e4392..a467723 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/python/PythonStarlarkApiTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/python/PythonStarlarkApiTest.java
@@ -196,6 +196,6 @@
     useConfiguration("--python_top=" + pythonTopLabel);
     ConfiguredTarget target = getConfiguredTarget("//pkg:pybin");
     assertThat(collectRunfiles(target))
-        .containsAllOf(getSourceArtifact("pkg/data.txt"), getSourceArtifact("pkg/userdata.txt"));
+        .containsAtLeast(getSourceArtifact("pkg/data.txt"), getSourceArtifact("pkg/userdata.txt"));
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java b/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java
index fd76f87..d43aabc 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java
@@ -246,7 +246,7 @@
             ImmutableSet.of("c0", "c1"));
     assertThat(structuredRc).isEqualTo(structuredArgsFrom2SimpleRcsWithOnlyResidue());
     assertThat(eventHandler.getEvents())
-        .containsAllOf(
+        .containsAtLeast(
             Event.warn("inconsistency in generated command line args. Ignoring bogus argument\n"),
             Event.warn("inconsistency in generated command line args. Ignoring bogus argument\n"));
   }
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunctionTest.java
index 0c9ad16..7c2ae22 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunctionTest.java
@@ -110,7 +110,7 @@
     // Verify that the target registered with the extra_execution_platforms flag is first in the
     // list.
     assertExecutionPlatformLabels(result.get(executionPlatformsKey))
-        .containsAllOf(
+        .containsAtLeast(
             makeLabel("//extra:execution_platform_1"), makeLabel("//extra:execution_platform_2"))
         .inOrder();
   }
@@ -136,7 +136,7 @@
     // Verify that the target registered with the extra_execution_platforms flag is first in the
     // list.
     assertExecutionPlatformLabels(result.get(executionPlatformsKey))
-        .containsAllOf(
+        .containsAtLeast(
             makeLabel("//extra:execution_platform_1"), makeLabel("//extra:execution_platform_2"))
         .inOrder();
   }
@@ -160,7 +160,7 @@
     // Verify that the target registered with the extra_execution_platforms flag is first in the
     // list.
     assertExecutionPlatformLabels(result.get(executionPlatformsKey))
-        .containsAllOf(
+        .containsAtLeast(
             makeLabel("//extra:execution_platform_1"), makeLabel("//extra:execution_platform_2"))
         .inOrder();
   }
@@ -211,7 +211,7 @@
     // Verify that the target registered with the extra_execution_platforms flag is first in the
     // list.
     assertExecutionPlatformLabels(result.get(executionPlatformsKey))
-        .containsAllOf(
+        .containsAtLeast(
             makeLabel("//extra:execution_platform_1"), makeLabel("//extra:execution_platform_2"))
         .inOrder();
   }
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunctionTest.java
index 6f412d7..2d9a622 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunctionTest.java
@@ -104,7 +104,7 @@
 
     // Verify that the target registered with the extra_toolchains flag is first in the list.
     assertToolchainLabels(result.get(toolchainsKey))
-        .containsAllOf(
+        .containsAtLeast(
             makeLabel("//extra:extra_toolchain_impl"), makeLabel("//toolchain:toolchain_1_impl"))
         .inOrder();
   }
@@ -146,7 +146,7 @@
 
     // Verify that the target registered with the extra_toolchains flag is first in the list.
     assertToolchainLabels(result.get(toolchainsKey))
-        .containsAllOf(
+        .containsAtLeast(
             makeLabel("//extra:extra_toolchain_impl_1"),
             makeLabel("//extra:extra_toolchain_impl_2"),
             makeLabel("//toolchain:toolchain_1_impl"))
@@ -250,7 +250,7 @@
         requestToolchainsFromSkyframe(toolchainsKey);
     assertThatEvaluationResult(result).hasNoError();
     assertToolchainLabels(result.get(toolchainsKey))
-        .containsAllOf(
+        .containsAtLeast(
             makeLabel("//extra:extra_toolchain1_impl"),
             makeLabel("//extra:extra_toolchain2_impl"),
             makeLabel("//extra/more:more_toolchain_impl"));
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java
index a79bd29..2808765 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java
@@ -356,7 +356,7 @@
           return ((Label) o).getName();
         }));
 
-    assertThat(names).containsAllOf("xxx", "yyy");
+    assertThat(names).containsAtLeast("xxx", "yyy");
     // Third is the C++ toolchain; its name changes between Blaze and Bazel.
     assertThat(names).hasSize(3);
   }
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
index d790733..06183c2 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
@@ -1564,7 +1564,7 @@
             ruleContext, "[f.short_path for f in ruleContext.attr.dep.default_runfiles.files]");
     assertThat(filenames).isInstanceOf(SkylarkList.class);
     SkylarkList filenamesList = (SkylarkList) filenames;
-    assertThat(filenamesList).containsAllOf("test/lib.py", "test/lib2.py");
+    assertThat(filenamesList).containsAtLeast("test/lib.py", "test/lib2.py");
     Object emptyFilenames =
         evalRuleContextCode(
             ruleContext, "list(ruleContext.attr.dep.default_runfiles.empty_filenames)");
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
index b780ef2..1d951c5 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
@@ -781,7 +781,7 @@
             Iterables.getOnlyElement(
                 ruleContext.getRuleContext().getAnalysisEnvironment().getRegisteredActions());
     assertThat(ActionsTestUtil.baseArtifactNames(action.getInputs()))
-        .containsAllOf(
+        .containsAtLeast(
             "mytool.sh",
             "mytool",
             "foo_Smytool" + OsUtils.executableExtension() + "-runfiles",
@@ -2883,7 +2883,7 @@
         getGeneratingAction(
             Iterables.getOnlyElement(r.getProvider(FileProvider.class).getFilesToBuild()));
     assertThat(ActionsTestUtil.baseArtifactNames(action.getRunfilesSupplier().getArtifacts()))
-        .containsAllOf("tool", "tool.sh", "data");
+        .containsAtLeast("tool", "tool.sh", "data");
   }
 
   @Test
@@ -2911,7 +2911,7 @@
         getGeneratingAction(
             Iterables.getOnlyElement(r.getProvider(FileProvider.class).getFilesToBuild()));
     assertThat(ActionsTestUtil.baseArtifactNames(action.getRunfilesSupplier().getArtifacts()))
-        .containsAllOf("tool", "tool.sh", "data");
+        .containsAtLeast("tool", "tool.sh", "data");
   }
 
   // Verifies that configuration_field can only be used on 'label' attributes.
@@ -3208,3 +3208,4 @@
     }
   }
 }
+
