anchor.diff:      ;
   
   typeParameter
  -    : ordinaryTypeParameter | '#'! dimensionalTypeParameter
  +    : ordinaryTypeParameter '...'? | '#'! dimensionalTypeParameter
       ;
   
   ordinaryTypeParameter
  -    : variance? typeName '...'?
  +    : variance? typeName
       -> ^(TYPE_PARAMETER ^(TYPE_VARIANCE variance)? typeName)
       ;
   
  
positive.code: // 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
        )? 
        specifier?
      ;
  
  iteratedFormalParameter
      : ('in'|'=') basicFormalParameter
      ;
  
  iteratedFormalParameterStart
      : ('in'|'=') annotatedDeclarationStart
      ;
  
  basicFormalParameter
      : annotations? formalParameterType parameterName formalParameters*
      ;
  
  extraFormalParameter
  
negative.code:     ;
  
  specialArgument
      : (type | 'local') memberName (containment | specifier)
      //| isCondition
      //| existsCondition
      ;
  