proc `&=`[T, U](a: var T; b: U) {.inline.}
proc `<<=`[T, U](a: var T; b: U) {.inline.}
proc `>>=`[T, U](a: var T; b: U) {.inline.}
proc `^=`[T, U](a: var T; b: U) {.inline.}
proc `|=`[T, U](a: var T; b: U) {.inline.}
template cfor(init, test, update, body: untyped)