diff --git a/user/super/com/google/gwt/emul/java/util/stream/StreamImpl.java b/user/super/com/google/gwt/emul/java/util/stream/StreamImpl.java
index bb5bc94..1126fc6 100644
--- a/user/super/com/google/gwt/emul/java/util/stream/StreamImpl.java
+++ b/user/super/com/google/gwt/emul/java/util/stream/StreamImpl.java
@@ -609,9 +609,11 @@
     return findFirst();
   }
 
+  private static final Consumer<Object> NULL_CONSUMER = value -> { };
+
   @Override
   public boolean anyMatch(Predicate<? super T> predicate) {
-    return filter(predicate).findFirst().isPresent();
+    return filter(predicate).spliterator().tryAdvance(NULL_CONSUMER);
   }
 
   @Override
diff --git a/user/test/com/google/gwt/emultest/java8/util/stream/StreamTest.java b/user/test/com/google/gwt/emultest/java8/util/stream/StreamTest.java
index e8b405c..1e0b5a0 100644
--- a/user/test/com/google/gwt/emultest/java8/util/stream/StreamTest.java
+++ b/user/test/com/google/gwt/emultest/java8/util/stream/StreamTest.java
@@ -291,34 +291,52 @@
   public void testAnyMatch() {
     // all
     assertTrue(Stream.of("a", "b").anyMatch(s -> true));
-
     // some
     assertTrue(Stream.of("a", "b").anyMatch(s -> s.equals("a")));
-
     // none
     assertFalse(Stream.of("a", "b").anyMatch(s -> false));
+
+    // With null values.
+    // all
+    assertTrue(Stream.of(null, "a", "b").anyMatch(s -> true));
+    // some
+    assertTrue(Stream.of(null, "a", "b").anyMatch(s ->  s == null));
+    // none
+    assertFalse(Stream.of(null, "a", "b").anyMatch(s -> false));
   }
 
   public void testAllMatch() {
     // all
     assertTrue(Stream.of("a", "b").allMatch(s -> true));
-
     // some
     assertFalse(Stream.of("a", "b").allMatch(s -> s.equals("a")));
-
     // none
     assertFalse(Stream.of("a", "b").allMatch(s -> false));
+
+    // With null values.
+    // all
+    assertTrue(Stream.of(null, "a", "b").allMatch(s -> true));
+    // some
+    assertFalse(Stream.of(null, "a", "b").allMatch(s -> s != null));
+    // none
+    assertFalse(Stream.of(null, "a", "b").allMatch(s -> false));
   }
 
   public void testNoneMatch() {
     // all
     assertFalse(Stream.of("a", "b").noneMatch(s -> true));
-
     // some
     assertFalse(Stream.of("a", "b").noneMatch(s -> s.equals("a")));
-
     // none
     assertTrue(Stream.of("a", "b").noneMatch(s -> false));
+
+    // With null values.
+    // all
+    assertFalse(Stream.of(null, "a", "b").noneMatch(s -> true));
+    // some
+    assertFalse(Stream.of(null, "a", "b").noneMatch(s -> s == null));
+    // none
+    assertTrue(Stream.of(null, "a", "b").noneMatch(s -> false));
   }
 
   public void testFlatMap() {
