diff --git a/src/main/java/com/android/tools/r8/ir/conversion/PostMethodProcessor.java b/src/main/java/com/android/tools/r8/ir/conversion/PostMethodProcessor.java
index 96c93a9..9616c47 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/PostMethodProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/PostMethodProcessor.java
@@ -31,8 +31,8 @@
 
   private final AppView<AppInfoWithLiveness> appView;
   private final Map<DexEncodedMethod, Collection<CodeOptimization>> methodsMap;
-  private final Deque<Collection<DexEncodedMethod>> waves;
-  private Collection<DexEncodedMethod> wave;
+  private final Deque<Set<DexEncodedMethod>> waves;
+  private Set<DexEncodedMethod> wave;
 
   private PostMethodProcessor(
       AppView<AppInfoWithLiveness> appView,
@@ -107,9 +107,9 @@
     }
   }
 
-  private Deque<Collection<DexEncodedMethod>> createWaves(AppView<?> appView, CallGraph callGraph) {
+  private Deque<Set<DexEncodedMethod>> createWaves(AppView<?> appView, CallGraph callGraph) {
     IROrdering shuffle = appView.options().testing.irOrdering;
-    Deque<Collection<DexEncodedMethod>> waves = new ArrayDeque<>();
+    Deque<Set<DexEncodedMethod>> waves = new ArrayDeque<>();
 
     int waveCount = 1;
     while (!callGraph.isEmpty()) {
diff --git a/src/main/java/com/android/tools/r8/utils/IROrdering.java b/src/main/java/com/android/tools/r8/utils/IROrdering.java
index 4b4ded3..db97cfa 100644
--- a/src/main/java/com/android/tools/r8/utils/IROrdering.java
+++ b/src/main/java/com/android/tools/r8/utils/IROrdering.java
@@ -8,7 +8,9 @@
 import com.google.common.collect.Lists;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.LinkedHashSet;
 import java.util.List;
+import java.util.Set;
 
 public interface IROrdering {
 
@@ -16,6 +18,8 @@
 
   Collection<DexEncodedMethod> order(Collection<DexEncodedMethod> methods);
 
+  Set<DexEncodedMethod> order(Set<DexEncodedMethod> methods);
+
   class IdentityIROrdering implements IROrdering {
 
     private static final IdentityIROrdering INSTANCE = new IdentityIROrdering();
@@ -35,6 +39,11 @@
     public Collection<DexEncodedMethod> order(Collection<DexEncodedMethod> methods) {
       return methods;
     }
+
+    @Override
+    public Set<DexEncodedMethod> order(Set<DexEncodedMethod> methods) {
+      return methods;
+    }
   }
 
   class NondeterministicIROrdering implements IROrdering {
@@ -58,5 +67,10 @@
     public List<DexEncodedMethod> order(Collection<DexEncodedMethod> methods) {
       return order((Iterable<DexEncodedMethod>) methods);
     }
+
+    @Override
+    public Set<DexEncodedMethod> order(Set<DexEncodedMethod> methods) {
+      return new LinkedHashSet<>(order((Iterable<DexEncodedMethod>) methods));
+    }
   }
 }
