@Override
public void visit(ForComprehensionClause that) {
super.visit(that);
// sort of a hack, because normal visiting rules would declare iterator variables to be potentially
// unboxed, but the implementation always boxes them for now, so override it after we visit the comprehension
ForIterator iter = that.getForIterator();
if (iter instanceof ValueIterator) {
((ValueIterator) iter).getVariable().getDeclarationModel().setUnboxed(false);
} else if (iter instanceof KeyValueIterator) {
((KeyValueIterator) iter).getKeyVariable().getDeclarationModel().setUnboxed(false);
((KeyValueIterator) iter).getValueVariable().getDeclarationModel().setUnboxed(false);