anchor.diff:     ;
   
   createfunctionstmt
  -   : CREATE opt_or_replace (FUNCTION | PROCEDURE) func_name func_args_with_defaults (RETURNS (func_return | TABLE OPEN_PAREN table_func_column_list CLOSE_PAREN))? createfunc_opt_list
  +   : CREATE opt_or_replace (FUNCTION | PROCEDURE) func_name func_args_with_defaults
  +     (
  +        RETURNS (func_return | TABLE OPEN_PAREN table_func_column_list CLOSE_PAREN)
  +     )?
  +     createfunc_opt_list
      ;
   
   opt_or_replace
  
positive.code:    //TODO: rewrite using read_sql_expression logic?
  
  for_control
     : for_variable IN_P (cursor_name opt_cursor_parameters | selectstmt | explainstmt | EXECUTE a_expr opt_for_using_expression | opt_reverse a_expr DOT_DOT a_expr opt_by_expression)
     ;
  
  opt_for_using_expression
  
negative.code:    ;
  
  opttempTableName
     : (LOCAL|GLOBAL)? (TEMPORARY | TEMP) opt_table qualified_name
     | UNLOGGED opt_table qualified_name
     | TABLE qualified_name
     | qualified_name
  