anchor.diff:      ;
       
   namedArgument
  -    : namedSpecifiedArgument | namedFunctionalArgument
  -    ;
  -
  -namedFunctionalArgument
  -    : memberType parameterName formalParameters* block
  -    ;
  -
  +    : namedSpecifiedArgument | namedArgumentDeclaration
  +    ;
  +
  +namedArgumentDeclaration
  +    : 'object' parameterName objectDefinition
  +    -> parameterName ^(OBJECT_ARG parameterName objectDefinition)
  +    /*'assign' memberName block
  +    -> ^(ATTRIBUTE_SETTER memberName block)*/
  +    | 'void' parameterName formalParameters+ block
  +    -> parameterName ^(METHOD_ARG 'void' parameterName formalParameters+ block)
  +    | inferrableType parameterName
  +      ( 
  +        formalParameters+ memberBody
  +      -> parameterName ^(METHOD_ARG inferrableType parameterName formalParameters+ memberBody)
  +      | memberBody
  +      ->parameterName ^(ATTRIBUTE_ARG inferrableType parameterName memberBody)      
  +      )
  +    ;
  +    
   namedSpecifiedArgument
  -    : parameterName specifier ';'!
  +    : parameterName specifier ';'
  +    -> ^(SPEC_ARG parameterName specifier)
       ;
   
   //special rule for syntactic predicate
  
positive.code:     FLOAT_CST;
      STRING_CST;
      QUOTE_CST;
      FOR_STMT;
      FOR_ITERATOR;
      FAIL_BLOCK;
      LOOP_BLOCK;
      FOR_CONTAINMENT;
      SEQUENCE_ENUM;
      SUPERCLASS;
      POSTFIX_EXPR;
      EXISTS_EXPR;
      NONEMPTY_EXPR;
      IS_EXPR;
      SATISFIES_EXPR;
      SPECIAL_ARG;
      PRIMARY;
  }
  
  @parser::header { package com.redhat.ceylon.compiler.parser; }
  
negative.code:     
  positionalArguments
      : '(' ( positionalArgument (',' positionalArgument)* )? ')'
      -> ^(POS_ARG_LIST ^(POS_ARG positionalArgument)*)
      ;
  
  positionalArgument
  