@Override public boolean visit(ForStatement node) { List<Expression> initializers = node.getInitializers(); // The for-loop initializers can either be a single variable declaration // expression or a list of initializer expressions. if (initializers.size() == 1 && initializers.get(0) instanceof VariableDeclarationExpression) { VariableDeclarationExpression decl = (VariableDeclarationExpression) initializers.get(0); extractVariableDeclarationFragments( decl.getFragments(), TreeUtil.asStatementList(node).subList(0, 0)); } else { extractExpressionList(initializers, TreeUtil.asStatementList(node).subList(0, 0), false); } Expression expr = node.getExpression(); if (expr != null) { newExpression(expr); expr.accept(this); List<VariableAccess> toExtract = getUnsequencedAccesses(); if (!toExtract.isEmpty()) { // Convert "if (;cond;)" into "if (;;) { if (!(cond)) break; ...}". List<Statement> stmtList = TreeUtil.asStatementList(node.getBody()).subList(0, 0); extractOrderedAccesses(stmtList, currentTopNode, toExtract); stmtList.add(createLoopTermination(node.getExpression())); node.setExpression(null); } } extractExpressionList(node.getUpdaters(), TreeUtil.asStatementList(node.getBody()), true); node.getBody().accept(this); return false; }