Strenghten type of waves to Set

Change-Id: Ib45954cac0e4c70b3e91b68d78f2a3ed9c45f9df
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));
+    }
   }
 }