   # Class definitions have optional bodies of prototype property assignments,
   # and optional references to the superclass.
   Class: [
-    o 'CLASS SimpleAssignable',               -> new Class $2
-    o 'CLASS SimpleAssignable EXTENDS Value', -> new Class $2, $4
+    o 'CLASS SimpleAssignable',                 -> new Class $2
+    o 'CLASS SimpleAssignable EXTENDS Value',   -> new Class $2, $4
     o 'CLASS SimpleAssignable
-       INDENT ClassBody OUTDENT',             -> new Class $2, null, $4
+       INDENT ClassBody OUTDENT',               -> new Class $2, null, $4
     o 'CLASS SimpleAssignable EXTENDS Value
-       INDENT ClassBody OUTDENT',             -> new Class $2, $4, $6
-    o 'CLASS INDENT ClassBody OUTDENT',       -> new Class null, null, $3
-    o 'CLASS',                                -> new Class null, null, new Expressions
-    o 'CLASS EXTENDS Value',                  -> new Class null, $3  , new Expressions
+       INDENT ClassBody OUTDENT',               -> new Class $2, $4, $6
+    o 'CLASS INDENT ClassBody OUTDENT',         -> new Class null, null, $3
+    o 'CLASS',                                  -> new Class null, null, new Expressions
+    o 'CLASS EXTENDS Value',                    -> new Class null, $3  , new Expressions
     o 'CLASS EXTENDS Value
-       INDENT ClassBody OUTDENT',             -> new Class null, $3, $5
+       INDENT ClassBody OUTDENT',               -> new Class null, $3, $5
   ]
 
   # Assignments that can happen directly inside a class declaration.


  # A reference to a property on *this*.
  ThisProperty: [
    o '@ Identifier', -> new Value new Literal('this'), [new Accessor($2)], 'this'
  ]

  # The array literal.

  # if-related rules are broken up along these lines in order to avoid
  # ambiguity.
  IfBlock: [
    o 'IF Expression Block',                    -> new If $2, $3
    o 'UNLESS Expression Block',                -> new If $2, $3, invert: true
    o 'IfBlock ELSE IF Expression Block',       -> $1.addElse new If $4, $5
    o 'IfBlock ELSE Block',                     -> $1.addElse $3
  ]

  # The full complement of *if* expressions, including postfix one-liner
  # *if* and *unless*.
  If: [
    o 'IfBlock'
    o 'Statement  POST_IF Expression',          -> new If $3, Expressions.wrap([$1]), statement: true
    o 'Expression POST_IF Expression',          -> new If $3, Expressions.wrap([$1]), statement: true
    o 'Statement  POST_UNLESS Expression',      -> new If $3, Expressions.wrap([$1]), statement: true, invert: true
    o 'Expression POST_UNLESS Expression',      -> new If $3, Expressions.wrap([$1]), statement: true, invert: true
  ]

  # Arithmetic and logical operators, working on one or more operands.
