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);
}