For large loop bodies like this it seems cleaner to keep the loop logic together, maybe "for (; !it.done; it.nextScope()) {...". That way when someone adds a "continue" it won't be extremely confusing why it doesn't work.