anchor.diff:  // 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); }
  +    @init { ValueParameterDeclaration vp = new ValueParameterDeclaration(null); 
  +            FunctionalParameterDeclaration fp = new FunctionalParameterDeclaration(null); 
  +            $parameter = vp; }
  +    : parameterType
  +      { vp.setType($parameterType.type); }
  +      { fp.setType($parameterType.type); }
         memberName
  -      { $parameter.setIdentifier($memberName.identifier); }
  -      (
  -          valueParameter? specifier?
  +      { vp.setIdentifier($memberName.identifier); }
  +      { fp.setIdentifier($memberName.identifier); }
  +      (
  +        (
  +          valueParameter
  +        )?
           //-> ^(VALUE_PARAMETER_DECLARATION parameterType memberName specifier?)
  -        |  parameters+ specifier? //for callable parameters
  +      |
  +        (
  +          parameters
  +          { fp.addParameterList($parameters.parameterList); }
  +        )+
  +        { $parameter=fp; }
  +          //for callable parameters
           //-> ^(FUNCTIONAL_PARAMETER_DECLARATION parameterType memberName parameters+ specifier?)
         )
  +      (
  +        specifier
  +        { $parameter.setSpecifierExpression($specifier.specifierExpression); }
  +      )?
  +    ;
  +
  +parameterDeclaration returns [Parameter parameter]
  +    : compilerAnnotations
  +      annotations 
  +      p=parameter
  +      { $parameter=$p.parameter;
  +        $parameter.setAnnotationList($annotations.annotationList); }
         { if ($parameter!=null) {
           $parameter.getCompilerAnnotations().addAll($compilerAnnotations.annotations);
         } }
  -    ;
  -
  -parameterDeclaration returns [Parameter parameter]
  -    : annotations 
  -      p=parameter
  -      { $parameter=$p.parameter;
  -        $parameter.setAnnotationList($annotations.annotationList); }
       ;
   
   valueParameter
  
positive.code: namedArgument returns [NamedArgument namedArgument]
      : namedSpecifiedArgument
        { $namedArgument = $namedSpecifiedArgument.specifiedArgument; }
      //| namedArgumentDeclaration
      ;
  
  namedSpecifiedArgument returns [SpecifiedArgument specifiedArgument]
  
negative.code: 
  setterDeclaration returns [AttributeSetterDefinition declaration]
      : ASSIGN 
        { $declaration = new AttributeSetterDefinition($ASSIGN); 
          $declaration.setType( new VoidModifier(null) ); }
        memberName 
        { $declaration.setIdentifier($memberName.identifier); }
        block
  