anchor.diff:        ( 
           block
           { $declaration.setBlock($block.block); }
  -      | (
  +      | 
  +        (
             functionSpecifier
             { $declaration.setSpecifierExpression($functionSpecifier.specifierExpression); }
           )?
  
positive.code:       )?
        RBRACKET
        { $pattern.setEndToken($RBRACKET); }
      ;
  
  keyItemPattern returns [KeyValuePattern pattern]
  
negative.code:     : LBRACKET
        { $pattern = new TuplePattern($LBRACKET); }
        (
          v1=variadicPattern
          { $pattern.addPattern($v1.pattern); }
          (
            c1=COMMA
            { $pattern.setEndToken($c1); }
            (
              v2=variadicPattern
              { $pattern.addPattern($v2.pattern);
                $pattern.setEndToken(null); }
            )
  