anchor.diff:      ;
   
   fileAnnotation
  -    : '@file' NL* ':' NL* ('[' unescapedAnnotation+ ']' | unescapedAnnotation) NL*
  +    : (AT_NO_WS | AT_PRE_WS) 'file' NL* ':' NL* ('[' unescapedAnnotation+ ']' | unescapedAnnotation) NL*
       ;
   
   packageHeader
  
positive.code: 
  setter
      : modifiers? 'set'
      | modifiers? 'set' NL* '(' (annotation | parameterModifier)* setterParameter ')' (NL* ':' NL* type)? NL* functionBody
      ;
  
  setterParameter
      : simpleIdentifier NL* (':' NL* type)?
      ;
  
  parameter
  
negative.code: 
  singleAnnotation
      : annotationUseSiteTarget NL* unescapedAnnotation
      | (AT_NO_WS | AT_PRE_WS) unescapedAnnotation
      ;
  
  multiAnnotation
      : annotationUseSiteTarget NL* '[' unescapedAnnotation+ ']'
      | (AT_NO_WS | AT_PRE_WS) '[' unescapedAnnotation+ ']'
      ;
  
  annotationUseSiteTarget
      : (AT_NO_WS | AT_PRE_WS) ('field' | 'property' | 'get' | 'set' | 'receiver' | 'param' | 'setparam' | 'delegate') NL* ':'
      ;
  
  unescapedAnnotation
  