 
   # In CoffeeScript, an object literal is simply a list of assignments.
   Object: [
-    o "{ AssignList }",                         -> new ObjectNode $2
-    o "{ IndentedAssignList }",                 -> new ObjectNode $2
-    o "{ AssignList , }",                       -> new ObjectNode $2
-    o "{ IndentedAssignList , }",               -> new ObjectNode $2
+    o "{ AssignList OptComma }",                -> new ObjectNode $2
+    o "{ IndentedAssignList OptComma }",        -> new ObjectNode $2
   ]
 
   # Assignment of properties within an object literal can be separated by


  # The list of arguments to a function call.
  Arguments: [
    o "CALL_START ArgList CALL_END",            -> $2
    o "CALL_START ArgList , 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
  ]

  # A reference to the *this* current object.


  # An **AssignList** within a block indentation.
  IndentedAssignList: [
    o "INDENT AssignList OptComma OUTDENT",     -> $2
  ]

  # Class definitions have optional bodies of prototype property assignments,
