anchor.diff:          ]
           [function_name]
           [ argument_list ]
  -
  -    rule function_statement:
  -        function_header
  -        [ provisos ]
  +        [ provisos_clause ]
           ( EQUAL assign_value SEMICOLON
           | SEMICOLON
               [
  
positive.code: 
      rule argument_item:
          ( FUNCTION function_argument
          | Type_sitem [ VAR | TOKENABLE | TOKREADY ]
          )
  
      rule argument_list:
  
negative.code:     rule module_declaration:
          TOKMODULE [ LBRACKET assign_value RBRACKET ] ( VAR | TYPEVAR argument_list )
          LPAREN [ module_param (COMMA module_param)* ] RPAREN
          [ provisos_clause ]
          SEMICOLON
          [
              module_item
              TOKENDMODULE [ COLON VAR]
          ]
  
      rule package_declaration:
          TOKPACKAGE VAR SEMICOLON
          ( package_declaration_item )*
          TOKENDPACKAGE [ COLON  VAR]
  
      rule function_return_type:
          ( TOKACTION VAR
          | TOKACTIONVALUE
          | type_instantiation
          )
  
      rule Type_item:
          TYPEVAR param_list
          | TOKINTEGER | TOKBOOL | TOKSTRING | TOKREAL | TOKNAT | TOKACTION
  
      rule Type_nitem:
          Type_item
          | VAR [ COLONCOLON function_return_type ]
  
      rule interface_arg:
          struct_arg | expr<<[]>>
  
      rule user_type:
          TYPEVAR LPAREN interface_arg (COMMA interface_arg )* RPAREN
  
      rule enum_element: term<<[]>> [EQUAL expr<<[]>>]
  
      rule deriving_type_class:
          TOKEQ | TOKBITS | TOKBOUNDED
  