       choice(
         seq(@expression_list, "="),
         seq(@identifier_list, ":=")),
-      "range",
+      keyword("range"),
       @expression)
 
-    defer_stmt: -> seq("defer", @expression)
+    defer_stmt: -> seq(keyword("defer"), @expression)

    pointer_type: -> seq("*", @base_type)
    base_type: -> @type

    function_type: -> seq("func", @signature)
    signature: -> seq(@parameters, optional(@result))
    result: -> choice(@parameters, @type)
    parameters: -> seq("(", optional(seq(@parameter_list, optional(","))), ")")
    parameter_list: -> seq(@parameter_decl, repeat(seq(",", @parameter_decl)))
    parameter_decl: -> seq(optional(@identifier_list), optional("..."), @type)

    interface_type: -> seq("interface", "{", repeat(seq(@method_spec, terminator())), "}")
    method_spec: -> choice(seq(@method_name, @signature), @interface_type_name)
    method_name: -> @_identifier
    interface_type_name: -> @type_name

    slice_type: -> seq("[", "]", @element_type)

    map_type: -> seq("map", "[", @key_type, "]", @element_type)
    key_type: -> @type

    channel_type: -> seq(choice("chan", seq("chan", "<-"), seq("chan", "->")), @element_type)

    #########################################################################
    # Statements

      @primary_expr,
      ".",
      "(",
      keyword("type"),
      ")")
    type_case_clause: -> seq(@type_switch_case, ":", @statement_list)
    type_switch_case: -> choice(seq(keyword("case"), @type_list), keyword("default"))

    select_stmt: -> seq(
      keyword("select"),
      "{",
      @comm_clause,
      "}")
    comm_clause: -> seq(@comm_case, ":", @statement_list)
    comm_case: -> choice(seq(keyword("case"), choice(@send_stmt, @recv_stmt)), keyword("default"))
    recv_stmt: -> seq(
      optional(choice(
        seq(@expression_list, "="),
