diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockAndroidSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockAndroidSupport.java
index a7458af..a90a80c 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockAndroidSupport.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockAndroidSupport.java
@@ -19,10 +19,10 @@
 import com.google.devtools.build.lib.util.Pair;
 import java.io.IOException;
 
-/**
- * Mocks out Android dependencies for testing.
- */
-public class BazelMockAndroidSupport {
+/** Mocks out Android dependencies for testing. */
+public final class BazelMockAndroidSupport {
+
+  private BazelMockAndroidSupport() {}
 
   public static void setupNdk(MockToolsConfig config) throws IOException {
     new Crosstool(config, "android/crosstool")
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
index 033ef7c..f7a4c79 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
@@ -25,42 +25,23 @@
   public static final BazelMockCcSupport INSTANCE = new BazelMockCcSupport();
 
   /** Filter to remove implicit dependencies of C/C++ rules. */
-  private static final Predicate<String> CC_LABEL_NAME_FILTER =
-      new Predicate<String>() {
-        @Override
-        public boolean apply(String label) {
-          return !label.startsWith("//tools/cpp");
-        }
-      };
+  private static final boolean isNotCcLabel(String label) {
+    return !label.startsWith("//tools/cpp");
+  }
 
   private BazelMockCcSupport() {}
 
   private static final ImmutableList<String> CROSSTOOL_ARCHS =
       ImmutableList.of("piii", "k8", "armeabi-v7a", "ppc");
 
-  protected static void createBasePackage(MockToolsConfig config) throws IOException {
-    config.create(
-        "base/BUILD",
-        "package(default_visibility=['//visibility:public'])",
-        "cc_library(name = 'system_malloc', linkstatic = 1)",
-        "cc_library(name = 'base', srcs=['timestamp.h'])");
-    if (config.isRealFileSystem()) {
-      config.linkTool("base/timestamp.h");
-    } else {
-      config.create("base/timestamp.h", "");
-    }
-  }
-
   @Override
   protected String getRealFilesystemCrosstoolTopPath() {
-    assert false;
-    return null;
+    throw new UnsupportedOperationException("TODO");
   }
 
   @Override
   protected String[] getRealFilesystemTools(String crosstoolTop) {
-    assert false;
-    return null;
+    throw new UnsupportedOperationException("TODO");
   }
 
   @Override
@@ -87,6 +68,6 @@
 
   @Override
   public Predicate<String> labelNameFilter() {
-    return CC_LABEL_NAME_FILTER;
+    return BazelMockCcSupport::isNotCcLabel;
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockPythonSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockPythonSupport.java
index d4d0a55..d96b9f2 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockPythonSupport.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockPythonSupport.java
@@ -18,10 +18,12 @@
 import java.io.IOException;
 
 /** Mock python support in Bazel. */
-public class BazelMockPythonSupport extends MockPythonSupport {
+public final class BazelMockPythonSupport extends MockPythonSupport {
 
   public static final BazelMockPythonSupport INSTANCE = new BazelMockPythonSupport();
 
+  private BazelMockPythonSupport() {}
+
   private static void addTool(MockToolsConfig config, String toolRelativePath) throws IOException {
     config.create(
         TestConstants.TOOLS_REPOSITORY_SCRATCH + toolRelativePath,
