anchor.diff:                  ParseRoutineBody(_localctx);
               }
      //                    | createfunc_opt_list createfunc_opt_item
  -   
  +
      ;
   
   common_func_opt_item
  
positive.code:    | INTO into_target
     ;
     //https://www.postgresql.org/docs/current/plpgsql-cursors.html#PLPGSQL-CURSOR-OPENING
     
     //OPEN unbound_cursorvar [ [ NO ] SCROLL ] FOR query;
     
     //OPEN unbound_cursorvar [ [ NO ] SCROLL ] FOR EXECUTE query_string
     
     //                                     [ USING expression [, ... ] ];
     
     //OPEN bound_cursorvar [ ( [ argument_name := ] argument_value [, ...] ) ];
     
  stmt_open
     : OPEN colid SEMI
     | OPEN cursor_variable opt_scroll_option FOR selectstmt SEMI
  
negative.code:    : opt_loop_label FOR for_control loop_body
     ;
     //TODO: rewrite using read_sql_expression logic?
  
  for_control
     : for_variable IN_P opt_reverse a_expr DOT_DOT a_expr opt_by_expression
  /* this rule covers  */
  
     | for_variable IN_P cursor_name opt_cursor_parameters
     | for_variable IN_P selectstmt
     | for_variable IN_P EXECUTE a_expr opt_for_using_expression
  