==================================
As expressions
==================================

h as `hello`

---

(program
  (expression_statement (as_expression (identifier) (template_string))))

==================================
Typeof expressions
==================================

typeof class {} === "function";

typeof module === "object" && typeof module.exports === "object"

---

(program
  (expression_statement
    (binary_expression
      (unary_expression (class (class_body)))
      (string)))
  (expression_statement
    (binary_expression
      (binary_expression (unary_expression (identifier)) (string))
      (binary_expression (unary_expression (member_expression (identifier) (property_identifier))) (string)))))

==================================
Array with empty elements
==================================

[, a, , b, , , , s, , , ]

---

(program
  (expression_statement
    (array (identifier) (identifier) (identifier))))

==================================
Variable named 'module'
==================================

var module;
module;

---

(program
  (variable_declaration (variable_declarator (identifier)))
  (expression_statement (identifier)))

==================================
Multi-line variable declarations
==================================

var a = b
  , c = d
  , e = f

---

(program (variable_declaration (variable_declarator (identifier) (identifier)) (variable_declarator (identifier) (identifier)) (variable_declarator (identifier) (identifier))))


=====================================
The 'less than' operator
=====================================

i < foo.length;
i < type.length;
i < string.length;

---

(program
  (expression_statement (binary_expression (identifier) (member_expression (identifier) (property_identifier))))
  (expression_statement (binary_expression (identifier) (member_expression (identifier) (property_identifier))))
  (expression_statement (binary_expression (identifier) (member_expression (identifier) (property_identifier)))))

=====================================
Subscript expressions in if statements
=====================================

if ( foo ) {
	set[ 1 ].apply()
}

---

(program
  (if_statement
    (parenthesized_expression (identifier))
    (statement_block
      (expression_statement
        (call_expression
          (member_expression
            (subscript_expression (identifier) (number)) (property_identifier))
          (arguments))))))

====================================
Objects with reserved words as keys
====================================

{
  public: true,
  private: true,
  readonly: true
}

---

(program (expression_statement (object
  (pair key: (property_identifier) value: (true))
  (pair key: (property_identifier) value: (true))
  (pair key: (property_identifier) value: (true)))))
