Small simplification in lexer
Small fix regarding unions in restrictions
Parser: fixed `obj.[](args)` and `obj.[]=(args)` wasn't parsing
Code reorganization and clean up