anchor.diff:          { require(false, "Missing ')'", -1); }
       ;
   
  -rbrack
  -    :   RBRACK
  -    |
  -        // !!!Error Alternative, impact the performance of parsing
  -        ~LBRACK
  -        { require(false, "Missing ']'", -1); }
  -    ;
  -
   nls
       :   NL*
       ;
  
positive.code:  *  The brackets may also be empty, as in T[].  This is how Groovy names array types.
   */
  indexPropertyArgs
      :   QUESTION? LBRACK expressionList[true]? rbrack
      ;
  
  namedPropertyArgs
      :   LBRACK mapEntryList rbrack
      ;
  
  primary
  
negative.code:             COMMA
              { require(!$empty, "Empty list constructor should not contain any comma(,)", -1); }
          )?
          RBRACK
      ;
  
  map
  