Increased type-safety of AST by replacing strings with distinct newtypes for identifiers, types and variables