A bit more typesafe AST and parser.