memoizeit

Details

diff --git a/src/main/java/br/ufrgs/inf/prosoft/memoizeit/MemoizeIt.java b/src/main/java/br/ufrgs/inf/prosoft/memoizeit/MemoizeIt.java
index 60da686..505a266 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/memoizeit/MemoizeIt.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/memoizeit/MemoizeIt.java
@@ -139,23 +139,10 @@ public class MemoizeIt {
 
     private void refineCandidates(boolean iteratively) {
         LOGGER.log(Level.INFO, "Refining {0} candidates", this.methods.size());
-        int i = 0;
         this.methods.sort((m1, m2) -> Integer.compare(m1.getOccurrencesSize(), m2.getOccurrencesSize()));
-        while (i < this.methods.size()) {
-            Method method = this.methods.get(i);
-            method.removeUnusedFields(this.callGraph.getNode(method.getName()));
-            boolean refineCandidate;
-            if (iteratively) {
-                refineCandidate = refineCandidateIteratively(method);
-            } else {
-                refineCandidate = refineCandidateExhaustively(method);
-            }
-            if (refineCandidate) {
-                this.methods.remove(i);
-                continue;
-            }
-            i++;
-        }
+        this.methods.removeIf(method -> {
+            return iteratively ? refineCandidateIteratively(method) : refineCandidateExhaustively(method);
+        });
     }
 
     private boolean refineCandidateExhaustively(Method method) {
@@ -370,6 +357,7 @@ public class MemoizeIt {
             throw new RuntimeException("Call Graph not set");
         }
         filterInitialCandidates();
+        removeUnusedFields();
         refineCandidates(iteratively);
         printClusters(shouldRank);
     }