add contract programming
allow chaining identifier parts
match string literals appropriately if there are more than one on a line
contracts were adding an extra end-bracket
Use "has key" to check for associative array key
allow "not has key" operator