anchor.diff:  #    "match" pattern  "=" expression ';'
   
       rule argument_item:
  -        ( "function" "Action" VAR "\\(" ( Type_item | VAR ) VAR "\\)"
  -        | Type_item VAR
  +        ( "function" 
  +            ( "Action" VAR
  +            | VAR [VAR]
  +            )
  +            "\\(" argument_item (',' argument_item)* "\\)"
  +        | Type_item_or_name VAR
           )
   
       rule arguments:
           argument_item ( ',' argument_item)*
   
  +    rule parameter: arguments
  +
  +    rule variable_assignment_or_call:
  +        term<<[]>>
  +        ( '=' expression ';'
  +        | "<=" expression ';'
  +        | ';'
  +        )
  +
  +    rule if_item:
  +        ( "begin"
  +            ( variable_assignment_or_call )*
  +          "end"
  +        | variable_assignment_or_call
  +        )
  +
  +    rule if_statement:
  +        "if" "\\(" expression "\\)"
  +           if_item [ "else" if_item ]
  +
  +    rule action_statements:
  +        ( let_statement
  +        | for_statement
  +        | if_statement
  +        | variable_declaration_or_call
  +        )*
  +
       rule function_body_statements:
  -        variable_declaration
  -        | let_statement
  +        let_statement
           | action_statement
  +        | variable_declaration_or_call
   
       rule function_statement:
  -        "function" Type_item function_name  "\\("[arguments] "\\)"
  +        "function" Type_item_or_name function_name  "\\("[arguments] "\\)"
           ( "=" expression ';'
           | [provisos] ';'
  -            ( function_body_statements
  -            | return_statement
  +            ( return_statement
  +            | function_body_statements
               )*
               "endfunction" [ ":"  function_name]
           )
  
positive.code:         action_statements
          "endrule" [ ":"  rule_name ]
  
      rule variable_assignment:
          VAR  "=" expression ';'
  
      rule variable_declaration:
          Type_item VAR [ "=" expression ] ';'
  
      rule variable_declaration_and_initializations:
          variable_declaration
          | let_statement
  
      rule rules_statement:
          "rules" [ ":"  rules_name]
          rule_satements
          (variable_declaration | variable_assignment)*
          #variable_declaration
          "endrules" [ ":"  rules_name]
  
      rule action_statement:
  
negative.code:               "endmethod" [ ":" method_name]
              ]
          | "Action" method_name  "\\(" parameter "\\)"
              [ "if"  "\\(" method_predicate "\\)" ] ';'
              [ method_body_statements
                "endmethod" [ ":" method_name]
  