 
   # The list of arguments to a function call.
   Arguments: [
-    o "CALL_START ArgList CALL_END",            -> $2
-    o "CALL_START ArgList , CALL_END",          -> $2
+    o "CALL_START ArgList OptComma CALL_END",   -> $2
   ]
 
   # Calling super.
   Super: [
-    o "SUPER CALL_START ArgList CALL_END",      -> new CallNode 'super', $3
-    o "SUPER CALL_START ArgList , CALL_END",    -> new CallNode 'super', $3
+    o "SUPER CALL_START ArgList OptComma CALL_END", -> new CallNode 'super', $3
   ]
 
   # A reference to the *this* current object.

    o "ArgList TERMINATOR Expression",          -> $1.concat [$3]
    o "ArgList , TERMINATOR Expression",        -> $1.concat [$4]
    o "ArgList , INDENT Expression",            -> $1.concat [$4]
    o "ArgList OUTDENT"
    o "ArgList , OUTDENT"
  ]

  # Just simple, comma-separated, required arguments (no fancy syntax). We need


  # The array literal.
  Array: [
    o "[ ArgList OptComma ]",                   -> new ArrayNode $2
  ]

  # The **ArgList** is both the list of objects passed into a function call,
