Mixin that adds an iterator class and a member variable of it. Note that this.iterator still has to be initialized by the constructor.
opApply wrapper to work around the problem that it isn't possible to have a static array opApply() argument because 'ref' is not allowed with a static array. Instead, the wrapper slices the argument and passes the slice to the 'foreach' body.
Utility template to implement Map.opApply()/Set.opApply(), working around the problem that opApply() cannot have static array parameters because 'ref' is forbidden for static arrays. The solution is to use dynamic arrays instead and pass an array slice to to the 'foreach' loop body delegate.