anchor.diff:      ;
   
   formalParameters
  -    : '(' (formalParameter (',' formalParameter)*)? ')'
  +    : '(' (formalParameterSpec (',' formalParameterSpec)*)? ')'
       ;
   
   // FIXME: This accepts more than the language spec: named arguments
   // and varargs arguments can appear in any order.  We'll have to
   // enforce the rule that the ... appears at the end of the parapmeter
   // list in a later pass of the compiler.
  +formalParameterSpec
  +    : formalParameter (specifier | '...')?
  +    ;
  +
   formalParameter
  -    : annotation* type
  -      parameterName ( ('->'|'..') type parameterName )? 
  -      (specifier | '...')?
  +    : annotation* type parameterName 
  +      ( '->' type parameterName | '..' parameterName )?
       ;
   
   // Control structures.
   
   // Backtracking here is needed for exactly the same reason as localOrStatement.
   condition
  -    : ('exists' | 'nonempty')? (expression | variable initializer)
  -    | 'is' type ((memberName initializer) => memberName initializer | expression)
  +    : ('exists' | 'nonempty')? ( (declarationStart) => variable specifier | expression )
  +    | 'is' type ( (memberName '=') => memberName specifier | expression )
       ;
   	
   controlStructure
  
positive.code:     ;
      
  resource
      : variable specifier | expression
      ;
  
  variable
      : type memberName
      ;
  
  // Lexer
  
negative.code:     : 'for' '(' forIterator ')' block ('fail' block)?
      ;
  
  forIterator
      : formalParameter 'in' (expression|enumeration)
      ;
      
  controllingVariable
  