// in a minute.
List<AJCStatement> statements = tree.init;
context = new EvaluationContext();
// Now we replay the loop evaluation that we know terminates nicely and make substitutions as we go...
context.evaluateStatements(tree.init);
// Strip everything that isn't a loop condition variable from the context.
final HashMap<VarSymbol, Value> currentAssignments = context.getCurrentAssignments();
currentAssignments.keySet().retainAll(condReads);