anchor.diff:  // enforce the rule that the ... appears at the end of the parapmeter
   // list in a later pass of the compiler.
   formalParameter
  -    : basicFormalParameter
  -      ( '->' type parameterName 
  -      | (iteratedFormalParameterStart) => iteratedFormalParameter
  -      )? 
  +    : annotations? formalParameterType parameterName formalParameters*
  +      ( valueFormalParameter | iteratedFormalParameter | (specifiedFormalParameterStart) => specifiedFormalParameter )? 
         specifier?
       ;
   
  +valueFormalParameter
  +    : '->' type parameterName
  +    ;
  +
   iteratedFormalParameter
  -    : ('in'|'=') basicFormalParameter
  -    ;
  -
  -iteratedFormalParameterStart
  -    : ('in'|'=') annotatedDeclarationStart
  -    ;
  -
  -basicFormalParameter
  -    : annotations? formalParameterType parameterName formalParameters*
  +    : 'in' type parameterName
  +    ;
  +
  +specifiedFormalParameter
  +    : '=' type parameterName
  +    ;
  +
  +specifiedFormalParameterStart
  +    : '=' declarationStart
       ;
   
   extraFormalParameter
  
positive.code:     ;
  
  typeParameter
      : ordinaryTypeParameter | '#'! dimensionalTypeParameter
      ;
  
  ordinaryTypeParameter
      : variance? typeName '...'?
      -> ^(TYPE_PARAMETER ^(TYPE_VARIANCE variance)? typeName)
      ;
  
  
negative.code:     ;
  
  specialArgument
      : (type | 'local') memberName (containment | specifier)
      //| isCondition
      //| existsCondition
      ;
  