[:X :Y :Z.opt :W.opt :R.rest] <- xxx

PUSHCOUNT # => { #elemStart }
xxx # => { #elemStart xxx }
DUP # => { #elemStart xxx xxx }
IFVEC # => { #elemStart xxx  }
GOTO novec # => { #elemStart xxx  }
GOTO isvec # => { #elemStart xxx  }
KONST raiser # => { #elemStart xxx raiser }
SINK 2 # => { raiser xxx }
PUSHCOUNT # => { raiser xxx #argStart }
LIFT 2 # => { raiser xxx #argStart xxx }
FLIP   # => { raiser xxx xxx #argStart }
KONST '[:X :Y :Z.opt :W.opt :R.rest]' # => { raiser xxx xxx #argStart '[:X :Y :Z.opt :W.opt :R.rest]' }
FLIP # => { raiser xxx xxx '[:X :Y :Z.opt :W.opt :R.rest]' #argStart }
TAILCALL

isvec: # => { #elemStart xxx }
SPREAD # => { e1 e2 ,,, en #elemStart }
PUSHCOUNT # => { e1 e2 ,,, en #elemStart #elemEnd+1 }
DEC 1 # => { e1 e2 ,,, en #elemStart #elemEnd }
FLIP # => { e1 e2 ,,, en #elemEnd #elemStart }
SUBTRACT # => { e1 e2 ,,, en #N }

DUP # => { e1 e2 ,,, en #N #N }
KONST 2 # => { e1 e2 ,,, en #N #N 2 }
IFLT # => { e1 e2 ,,, en #N }
GOTO ok # => { e1 e2 ,,, en #N }
PUSHCOUNT # => { e1 e2 ,,, en #N #elemEnd+1 }
DEC 1 # => { e1 e2 ,,, en #N #elemEnd }
FLIP # => { e1 e2 ,,, en #elemEnd #N }
SUBTRACT # => { e1 e2 ,,, en #elemStart }
VEC # => { xxx }
NADA # => { xxx nada }
PUSHCOUNT # => { xxx nada #argStart }
LIFT 3 # => { xxx nada #argStart xxx}
FLIP # => { xxx nada  xxx #argStart}
KONST raiser # => { xxx nada xxx #argStart raiser }
SINK 4 # => { raiser nada xxx #argStart }
KONST '[:X :Y :Z.opt :W.opt :R.rest]' # => { raiser nada xxx #argStart '[:X :Y :Z.opt :W.opt :R.rest]' }
TAILCALL
ok: # => { e1 e2 ,,, en #N }

DUP # => { e1 e2 ,,, en #N #N }
KONST 2 # => { e1 e2 ,,, en #N #N 2 }
IFEQ # => { e1 e2 ,,, en #N }
GOTO not2 # => { e1 e2 ,,, en #N }

REMOVE  # => { e1 e2 }
PUSHCOUNT # => { e1 e2 #here }
VEC # => { e1 e2 [] }
LSTORE R # => { e1 e2 }
PUSHCOUNT # => { e1 e2 #here }
VEC # => { e1 e2 [] }
LSTORE W # => { e1 e2 }
PUSHCOUNT # => { e1 e2 #here }
VEC # => { e1 e2 [] }
LSTORE Z # => { e1 e2 }
GOTO mandatory

not2: # => { e1 e2 ,,, en #N }
DUP  # => { e1 e2 ,,, en #N #N }
KONST 3  # => { e1 e2 ,,, en #N #N 3 }
IFEQ # => { e1 e2 ,,, en #N }
GOTO not3 # => { e1 e2 ,,, en #N }

REMOVE # => { e1 e2 e3 }
PUSHCOUNT # => { e1 e2 e3 #here }
VEC # => { e1 e2 e3 [] }
LSTORE R # => { e1 e2 e3 }
PUSHCOUNT # => { e1 e2 e3 #here }
VEC # => { e1 e2 e3 [] }
LSTORE W # => { e1 e2 e3 }
PUSHCOUNT # => { e1 e2 e3 #e3+1 }
DEC 1 # => { e1 e2 e3 #e3 }
VEC # => { e1 e2 [e3] }
LSTORE Z # => { e1 e2 }
GOTO mandatory

not3 # => { e1 e2 ,,, en #N }
PUSHCOUNT  #=>  { e1 e2 ,,, en #N #elemEnd+1 }
DEC 1 # => { e1 e2 ,,, en #N #elemEnd }
FLIP # => { e1 e2 ,,, en #elemEnd #N }
DEC 4 # => { e1 e2 ,,, en #elemEnd #N-4 }
SUBTRACT # => { e1 e2 ,,, en #elemStart+4 }
VEC # => { e1 e2 e3 e4 [,,,] }
LSTORE R # => { e1 e2 e3 e4 }

mandatory:
