diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/JUnit4Bazel.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/JUnit4Bazel.java
index 7ce14d6..38139e4 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/JUnit4Bazel.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/JUnit4Bazel.java
@@ -50,10 +50,10 @@
 import com.google.testing.junit.runner.sharding.ShardingFiltersFactory;
 import com.google.testing.junit.runner.util.MemoizingSupplier;
 import com.google.testing.junit.runner.util.SetFactory;
-import com.google.testing.junit.runner.util.Supplier;
 import java.io.OutputStream;
 import java.io.PrintStream;
 import java.util.Set;
+import java.util.function.Supplier;
 import org.junit.internal.TextListener;
 import org.junit.runner.Request;
 import org.junit.runner.notification.RunListener;
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/ResultWriterFactory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/ResultWriterFactory.java
index 34dcdf5..29d4b1d 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/ResultWriterFactory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/ResultWriterFactory.java
@@ -17,7 +17,7 @@
 import com.google.testing.junit.runner.model.AntXmlResultWriter;
 import com.google.testing.junit.runner.model.XmlResultWriter;
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
+import java.util.function.Supplier;
 
 /**
  * A factory that supplies {@link XmlResultWriter}.
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/internal/SignalHandlersFactory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/internal/SignalHandlersFactory.java
index 78ef030..9bf42a4 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/internal/SignalHandlersFactory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/internal/SignalHandlersFactory.java
@@ -15,7 +15,7 @@
 package com.google.testing.junit.runner.internal;
 
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
+import java.util.function.Supplier;
 
 /**
  * A factory that supplies {@link SignalHandlers}.
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/internal/junit4/JUnit4TestXmlListener.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/internal/junit4/JUnit4TestXmlListener.java
index 052c0a7..cf05776 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/internal/junit4/JUnit4TestXmlListener.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/internal/junit4/JUnit4TestXmlListener.java
@@ -18,9 +18,9 @@
 import com.google.testing.junit.runner.internal.Stderr;
 import com.google.testing.junit.runner.internal.Xml;
 import com.google.testing.junit.runner.model.TestSuiteModel;
-import com.google.testing.junit.runner.util.Supplier;
 import java.io.OutputStream;
 import java.io.PrintStream;
+import java.util.function.Supplier;
 import javax.inject.Inject;
 import javax.inject.Singleton;
 import org.junit.Ignore;
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4ConfigFactory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4ConfigFactory.java
index 3d5e842..7010ae1 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4ConfigFactory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4ConfigFactory.java
@@ -15,7 +15,7 @@
 package com.google.testing.junit.runner.junit4;
 
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
+import java.util.function.Supplier;
 
 /**
  * A factory that supplies {@link JUnit4Config}.
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4Runner.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4Runner.java
index 87a2a48..186c9d3 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4Runner.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4Runner.java
@@ -20,12 +20,12 @@
 import com.google.testing.junit.runner.internal.junit4.CancellableRequestFactory;
 import com.google.testing.junit.runner.model.TestSuiteModel;
 import com.google.testing.junit.runner.util.GoogleTestSecurityManager;
-import com.google.testing.junit.runner.util.Supplier;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.PrintStream;
 import java.util.Set;
+import java.util.function.Supplier;
 import javax.annotation.Nullable;
 import javax.inject.Inject;
 import org.junit.internal.runners.ErrorReportingRunner;
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerBaseModule.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerBaseModule.java
index cca0dd2..20da0f2 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerBaseModule.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerBaseModule.java
@@ -21,12 +21,12 @@
 import com.google.testing.junit.runner.model.TestSuiteModel;
 import com.google.testing.junit.runner.sharding.api.ShardingFilterFactory;
 import com.google.testing.junit.runner.util.MemoizingSupplier;
-import com.google.testing.junit.runner.util.Supplier;
 import java.io.OutputStream;
 import java.io.PrintStream;
 import java.io.UnsupportedEncodingException;
 import java.nio.charset.StandardCharsets;
 import java.util.Set;
+import java.util.function.Supplier;
 import javax.inject.Singleton;
 import org.junit.internal.TextListener;
 import org.junit.runner.Request;
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerFactory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerFactory.java
index cfb86c8..4c1414e 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerFactory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerFactory.java
@@ -17,9 +17,9 @@
 import com.google.testing.junit.runner.internal.junit4.CancellableRequestFactory;
 import com.google.testing.junit.runner.model.TestSuiteModel;
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
 import java.io.PrintStream;
 import java.util.Set;
+import java.util.function.Supplier;
 import org.junit.runner.Request;
 import org.junit.runner.notification.RunListener;
 
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4TestModelBuilder.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4TestModelBuilder.java
index cb635bf..60ebf4e 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4TestModelBuilder.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4TestModelBuilder.java
@@ -15,7 +15,7 @@
 package com.google.testing.junit.runner.junit4;
 
 import com.google.testing.junit.runner.model.TestSuiteModel;
-import com.google.testing.junit.runner.util.Supplier;
+import java.util.function.Supplier;
 import javax.inject.Inject;
 import javax.inject.Singleton;
 import org.junit.runner.Description;
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4TestModelBuilderFactory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4TestModelBuilderFactory.java
index 6cf4411..0705738 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4TestModelBuilderFactory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4TestModelBuilderFactory.java
@@ -16,7 +16,7 @@
 
 import com.google.testing.junit.runner.model.TestSuiteModel;
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
+import java.util.function.Supplier;
 import org.junit.runner.Request;
 
 /**
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4TestNameListenerFactory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4TestNameListenerFactory.java
index b12a924..57116c8 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4TestNameListenerFactory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4TestNameListenerFactory.java
@@ -17,7 +17,7 @@
 import com.google.testing.junit.runner.internal.junit4.JUnit4TestNameListener;
 import com.google.testing.junit.runner.internal.junit4.SettableCurrentRunningTest;
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
+import java.util.function.Supplier;
 
 /**
  * A factory that supplies {@link JUnit4TestNameListener}.
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4TestStackTraceListenerFactory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4TestStackTraceListenerFactory.java
index 865cd68..97493ea 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4TestStackTraceListenerFactory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4TestStackTraceListenerFactory.java
@@ -17,8 +17,8 @@
 import com.google.testing.junit.runner.internal.SignalHandlers;
 import com.google.testing.junit.runner.internal.junit4.JUnit4TestStackTraceListener;
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
 import java.io.PrintStream;
+import java.util.function.Supplier;
 
 /**
  * A factory that supplies {@link JUnit4TestStackTraceListener}.
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4TestXmlListenerFactory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4TestXmlListenerFactory.java
index 2ba9dd4..8d72251 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4TestXmlListenerFactory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4TestXmlListenerFactory.java
@@ -19,9 +19,9 @@
 import com.google.testing.junit.runner.internal.junit4.JUnit4TestXmlListener;
 import com.google.testing.junit.runner.model.TestSuiteModel;
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
 import java.io.OutputStream;
 import java.io.PrintStream;
+import java.util.function.Supplier;
 
 /**
  * A factory that supplies {@link JUnit4TestXmlListener}.
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/NameListenerFactory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/NameListenerFactory.java
index a65b96c..afc479d 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/NameListenerFactory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/NameListenerFactory.java
@@ -16,7 +16,7 @@
 
 import com.google.testing.junit.runner.internal.junit4.JUnit4TestNameListener;
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
+import java.util.function.Supplier;
 import org.junit.runner.notification.RunListener;
 
 /**
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/ProvideTextListenerFactory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/ProvideTextListenerFactory.java
index 2a855cc..25b95d7 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/ProvideTextListenerFactory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/ProvideTextListenerFactory.java
@@ -15,8 +15,8 @@
 package com.google.testing.junit.runner.junit4;
 
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
 import java.io.PrintStream;
+import java.util.function.Supplier;
 import org.junit.internal.TextListener;
 
 /**
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/ProvideXmlStreamFactory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/ProvideXmlStreamFactory.java
index e69dd8c..b5f3f6d 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/ProvideXmlStreamFactory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/ProvideXmlStreamFactory.java
@@ -15,9 +15,9 @@
 package com.google.testing.junit.runner.junit4;
 
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.util.function.Supplier;
 
 /**
  * A factory that supplies {@link OutputStream}.
@@ -35,16 +35,7 @@
 
   @Override
   public OutputStream get() {
-    OutputStream outputStream =
-        new LazyOutputStream(
-            new Supplier<OutputStream>() {
-              @Override
-              public OutputStream get() {
-                return JUnit4RunnerModule.provideXmlStream(configSupplier.get());
-              }
-            });
-
-    return outputStream;
+    return new LazyOutputStream(() -> JUnit4RunnerModule.provideXmlStream(configSupplier.get()));
   }
 
   public static Factory<OutputStream> create(Supplier<JUnit4Config> configSupplier) {
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/RequestFactory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/RequestFactory.java
index 90e7cd6..55352ab 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/RequestFactory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/RequestFactory.java
@@ -15,7 +15,7 @@
 package com.google.testing.junit.runner.junit4;
 
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
+import java.util.function.Supplier;
 import org.junit.runner.Request;
 
 /**
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/StackTraceListenerFactory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/StackTraceListenerFactory.java
index b3e2c14..150d9ad 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/StackTraceListenerFactory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/StackTraceListenerFactory.java
@@ -16,7 +16,7 @@
 
 import com.google.testing.junit.runner.internal.junit4.JUnit4TestStackTraceListener;
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
+import java.util.function.Supplier;
 import org.junit.runner.notification.RunListener;
 
 /**
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/TestSuiteModelSupplierFactory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/TestSuiteModelSupplierFactory.java
index 98b858f..2046e98 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/TestSuiteModelSupplierFactory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/TestSuiteModelSupplierFactory.java
@@ -16,7 +16,7 @@
 
 import com.google.testing.junit.runner.model.TestSuiteModel;
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
+import java.util.function.Supplier;
 
 /**
  * A factory that supplies {@link Supplier}<{@link TestSuiteModel}> from a
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/TextListenerFactory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/TextListenerFactory.java
index 48adc58..3f484d1 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/TextListenerFactory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/TextListenerFactory.java
@@ -15,7 +15,7 @@
 package com.google.testing.junit.runner.junit4;
 
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
+import java.util.function.Supplier;
 import org.junit.internal.TextListener;
 import org.junit.runner.notification.RunListener;
 
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/TopLevelSuiteNameFactory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/TopLevelSuiteNameFactory.java
index 8cb0997..ecc3823 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/TopLevelSuiteNameFactory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/TopLevelSuiteNameFactory.java
@@ -15,7 +15,7 @@
 package com.google.testing.junit.runner.junit4;
 
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
+import java.util.function.Supplier;
 
 /**
  * A factory that supplies a top level suite {@link String}.
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/XmlListenerFactory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/XmlListenerFactory.java
index c912996..e78d530 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/XmlListenerFactory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/XmlListenerFactory.java
@@ -16,7 +16,7 @@
 
 import com.google.testing.junit.runner.internal.junit4.JUnit4TestXmlListener;
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
+import java.util.function.Supplier;
 import org.junit.runner.notification.RunListener;
 
 /**
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/model/TestSuiteModelBuilderFactory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/model/TestSuiteModelBuilderFactory.java
index 3faffd2..5da704f 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/model/TestSuiteModelBuilderFactory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/model/TestSuiteModelBuilderFactory.java
@@ -17,8 +17,8 @@
 import com.google.testing.junit.runner.sharding.ShardingEnvironment;
 import com.google.testing.junit.runner.sharding.ShardingFilters;
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
 import com.google.testing.junit.runner.util.TestClock;
+import java.util.function.Supplier;
 
 /**
  * A factory that supplies a top level suite {@link TestSuiteModel.Builder}.
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/sharding/ShardingFiltersFactory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/sharding/ShardingFiltersFactory.java
index 29a1534..9b48fda 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/sharding/ShardingFiltersFactory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/sharding/ShardingFiltersFactory.java
@@ -16,7 +16,7 @@
 
 import com.google.testing.junit.runner.sharding.api.ShardingFilterFactory;
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
+import java.util.function.Supplier;
 
 /**
  * A factory that supplies a {@link ShardingFilters}.
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/util/Factory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/util/Factory.java
index 2a347c4..0c6e36c 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/util/Factory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/util/Factory.java
@@ -14,8 +14,7 @@
 
 package com.google.testing.junit.runner.util;
 
-/**
- * An interface for factory implementations.
- */
-public interface Factory<T> extends Supplier<T> {
-}
\ No newline at end of file
+import java.util.function.Supplier;
+
+/** An interface for factory implementations. */
+public interface Factory<T> extends Supplier<T> {}
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/util/MemoizingSupplier.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/util/MemoizingSupplier.java
index 5f01d20..87d6a0e 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/util/MemoizingSupplier.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/util/MemoizingSupplier.java
@@ -14,6 +14,8 @@
 
 package com.google.testing.junit.runner.util;
 
+import java.util.function.Supplier;
+
 /**
  * Returns a {@link Supplier} which caches the instance retrieved during the first call to
  * {@code get()} and returns that value on subsequent calls to {@code get()}. See:
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/util/SetFactory.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/util/SetFactory.java
index 518b345..b25b436 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/util/SetFactory.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/util/SetFactory.java
@@ -23,6 +23,7 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.function.Supplier;
 
 /**
  * A {@link Factory} implementation used to implement {@link Set} bindings. This factory always
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/util/Supplier.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/util/Supplier.java
deleted file mode 100644
index 97de3fd..0000000
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/util/Supplier.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2016 The Bazel Authors. All Rights Reserved.
-//
-// 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 com.google.testing.junit.runner.util;
-
-
-/**
- * A class that can supply objects of a single type. Semantically, this could be a factory,
- * generator, builder, closure, or something else entirely. No guarantees are implied by this
- * interface.
- */
-public interface Supplier<T> {
-  /**
-   * Retrieves an instance of the appropriate type. The returned object may or may not be a new
-   * instance, depending on the implementation.
-   *
-   * @return an instance of the appropriate type
-   */
-  T get();
-}
\ No newline at end of file
diff --git a/src/java_tools/junitrunner/javatests/com/google/testing/junit/runner/internal/junit4/JUnit4TestXmlListenerTest.java b/src/java_tools/junitrunner/javatests/com/google/testing/junit/runner/internal/junit4/JUnit4TestXmlListenerTest.java
index a3ed115..695523f 100644
--- a/src/java_tools/junitrunner/javatests/com/google/testing/junit/runner/internal/junit4/JUnit4TestXmlListenerTest.java
+++ b/src/java_tools/junitrunner/javatests/com/google/testing/junit/runner/internal/junit4/JUnit4TestXmlListenerTest.java
@@ -29,11 +29,11 @@
 import com.google.common.collect.Lists;
 import com.google.testing.junit.runner.internal.SignalHandlers;
 import com.google.testing.junit.runner.model.TestSuiteModel;
-import com.google.testing.junit.runner.util.Supplier;
 import java.io.ByteArrayOutputStream;
 import java.io.OutputStream;
 import java.io.PrintStream;
 import java.util.List;
+import java.util.function.Supplier;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Ignore;
diff --git a/src/java_tools/junitrunner/javatests/com/google/testing/junit/runner/junit4/JUnit4BazelMock.java b/src/java_tools/junitrunner/javatests/com/google/testing/junit/runner/junit4/JUnit4BazelMock.java
index bffc655..1e7739b 100644
--- a/src/java_tools/junitrunner/javatests/com/google/testing/junit/runner/junit4/JUnit4BazelMock.java
+++ b/src/java_tools/junitrunner/javatests/com/google/testing/junit/runner/junit4/JUnit4BazelMock.java
@@ -23,10 +23,10 @@
 import com.google.testing.junit.runner.sharding.ShardingFilters;
 import com.google.testing.junit.runner.util.MemoizingSupplier;
 import com.google.testing.junit.runner.util.SetFactory;
-import com.google.testing.junit.runner.util.Supplier;
 import com.google.testing.junit.runner.util.TestClock;
 import java.io.PrintStream;
 import java.util.Set;
+import java.util.function.Supplier;
 import org.junit.internal.TextListener;
 import org.junit.runner.Request;
 import org.junit.runner.notification.RunListener;
diff --git a/src/java_tools/junitrunner/javatests/com/google/testing/junit/runner/junit4/TestModuleShardingFiltersFactory.java b/src/java_tools/junitrunner/javatests/com/google/testing/junit/runner/junit4/TestModuleShardingFiltersFactory.java
index 144ed5d..ff5a4ed 100644
--- a/src/java_tools/junitrunner/javatests/com/google/testing/junit/runner/junit4/TestModuleShardingFiltersFactory.java
+++ b/src/java_tools/junitrunner/javatests/com/google/testing/junit/runner/junit4/TestModuleShardingFiltersFactory.java
@@ -18,7 +18,7 @@
 import com.google.testing.junit.runner.sharding.ShardingFilters;
 import com.google.testing.junit.runner.sharding.api.ShardingFilterFactory;
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
+import java.util.function.Supplier;
 
 /**
  * A factory that supplies a {@link ShardingFilters} for testing purposes.
diff --git a/src/java_tools/junitrunner/javatests/com/google/testing/junit/runner/junit4/TestModuleXmlResultWriterFactory.java b/src/java_tools/junitrunner/javatests/com/google/testing/junit/runner/junit4/TestModuleXmlResultWriterFactory.java
index e0734d7..9d9bfe2 100644
--- a/src/java_tools/junitrunner/javatests/com/google/testing/junit/runner/junit4/TestModuleXmlResultWriterFactory.java
+++ b/src/java_tools/junitrunner/javatests/com/google/testing/junit/runner/junit4/TestModuleXmlResultWriterFactory.java
@@ -17,7 +17,7 @@
 import com.google.testing.junit.runner.model.AntXmlResultWriter;
 import com.google.testing.junit.runner.model.XmlResultWriter;
 import com.google.testing.junit.runner.util.Factory;
-import com.google.testing.junit.runner.util.Supplier;
+import java.util.function.Supplier;
 
 /**
  * A factory that supplies a {@link XmlResultWriter} for testing purposes.
