# KOS_OP_ITER_NEXT_STORE_VAR - **Style**: EXTRA. Fields: VAR (name), LABEL (else branch pc, post-compile). - **Stack**: Uses region iterator (PUSH_FOREACH). If next available: store the element under the name in the current frame namespace, stack unchanged; else jump to the label. Auto-await if the iterator is async: a deferred element is stored under the name when it arrives. - **Invariants**: Must be inside a PUSH_FOREACH extent. The label must be local. - **Compiler form:** Produced by the processor from `ITER_NEXT` followed by `VAR_STORE`. A name with a fast slot lowers the opcode to `ITER_NEXT_STORE_FAST`; this form remains where the name has none, such as a module-level loop. **Example:** Module-level for-each: next from the region iterator into `x`; if exhausted jump to 5. | index | opcode | arg | arg view | comment | |------:|----------|-----|----------|---------| | 0 | CONST | 0 | 0 ([1,2,3]) | stack: [..., iterable] | | 1 | PUSH_FOREACH | 0 | 0 | push region; iterator from iterable | | 2 | ITER_NEXT_STORE_VAR | 0 | (x, -> 5) | next from region into x; if exhausted -> pc=5. stack unchanged | | 3 | CONTINUE | 0 | 0 | back to the step | | 4 | POP_FOREACH | 0 | 0 | push loop result (None if unset) | | 5 | LABEL | -- | -- | else (exhausted) |