switch from if/elsif to case stmt
replace [] with an Array.new(size)

plus minor cleanups
optimize: if/elsif to case and direct :: access
getOrAdd was broken. fixed

fix other typo bugs
clean up & opt improveoments

reorder certain equalities with Empty to reduce comparisions.
cache hascode, recompute on context change

reorder init to have less branches.
move tracelistener to its own file.
fix read ability  of parser init
version 0.9.1