diff --git a/src/test/examplesJava11/collectiontoarray/Main.java b/src/test/examplesJava11/collectiontoarray/Main.java
index 91bbd8b..3a4cc01 100644
--- a/src/test/examplesJava11/collectiontoarray/Main.java
+++ b/src/test/examplesJava11/collectiontoarray/Main.java
@@ -7,6 +7,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.function.IntFunction;
 
 public class Main {
   public static void main(String[] args) {
@@ -16,5 +17,20 @@
     // This default method was added in Android T.
     String[] toArray = list.toArray(String[]::new);
     System.out.println(Arrays.toString(toArray));
+
+    List<String> myList = new MyList<>();
+    myList.add("one");
+    myList.add("two");
+    // This default method was added in Android T.
+    String[] toArray2 = myList.toArray(String[]::new);
+    System.out.println(Arrays.toString(toArray2));
+  }
+
+  @SuppressWarnings("all")
+  public static class MyList<T> extends ArrayList<T> {
+    public <T> T[] toArray(IntFunction<T[]> generator) {
+      System.out.println("Override");
+      return super.toArray(generator);
+    }
   }
 }
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/jdk11/CollectionToArrayTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/jdk11/CollectionToArrayTest.java
index d3d901a..6f1b750 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/jdk11/CollectionToArrayTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/jdk11/CollectionToArrayTest.java
@@ -4,7 +4,7 @@
 
 package com.android.tools.r8.desugar.desugaredlibrary.jdk11;
 
-import static com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification.DEFAULT_SPECIFICATIONS;
+import static com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification.SPECIFICATIONS_WITH_CF2CF;
 import static com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification.JDK11;
 import static com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification.JDK11_PATH;
 
@@ -32,7 +32,8 @@
 
   private static final Path INPUT_JAR =
       Paths.get(ToolHelper.EXAMPLES_JAVA11_JAR_DIR + "collectiontoarray.jar");
-  private static final String EXPECTED_OUTPUT = StringUtils.lines("[one, two]");
+  private static final String EXPECTED_OUTPUT =
+      StringUtils.lines("[one, two]", "Override", "[one, two]");
   private static final String MAIN_CLASS = "collectiontoarray.Main";
 
   @Parameters(name = "{0}, spec: {1}, {2}")
@@ -40,7 +41,7 @@
     return buildParameters(
         getTestParameters().withDexRuntimes().withAllApiLevels().build(),
         ImmutableList.of(JDK11, JDK11_PATH),
-        DEFAULT_SPECIFICATIONS);
+        SPECIFICATIONS_WITH_CF2CF);
   }
 
   public CollectionToArrayTest(
