anchor.diff:      | COMPLEMENT_OP
       ;
       
  +compilerAnnotations returns [List<CompilerAnnotation> annotations]
  +    : { $annotations = new ArrayList<CompilerAnnotation>(); }
  +    (
  +      compilerAnnotation
  +      { $annotations.add($compilerAnnotation.annotation); }
  +    )*
  +    ;
  +    
   compilerAnnotation returns [CompilerAnnotation annotation]
       : COMPILER_ANNOTATION 
         { $annotation=new CompilerAnnotation($COMPILER_ANNOTATION); }
         annotationName 
         { $annotation.setIdentifier($annotationName.identifier); }
         ( 
  -          LBRACKET
  +          INDEX_OP
             stringLiteral
             { $annotation.setStringLiteral($stringLiteral.stringLiteral); }
             RBRACKET
  
positive.code:     ;
  
  importElement returns [ImportMemberOrType importMemberOrType]
      : memberAlias? memberName
        { $importMemberOrType = new ImportMember(null);
          $importMemberOrType.setAlias($memberAlias.alias);
          $importMemberOrType.setIdentifier($memberName.identifier); }
  
negative.code: // enforce the rule that the ... appears at the end of the parapmeter
  // list in a later pass of the compiler.
  parameter returns [Parameter parameter]
      : compilerAnnotations
        { $parameter = new ValueParameterDeclaration(null); }
        parameterType
        { $parameter.setType($parameterType.type); }
        memberName
  