anchor.diff:      ;
   
   create_function_body
  -    : (CREATE (OR REPLACE)?)? FUNCTION function_name ('(' parameter (',' parameter)* ')')?
  +    : CREATE (OR REPLACE)? FUNCTION function_name ('(' parameter (',' parameter)* ')')?
         RETURN type_spec (invoker_rights_clause|parallel_enable_clause|result_cache_clause|DETERMINISTIC)*
         ((PIPELINED? (IS | AS) (DECLARE? declare_spec* body | call_spec)) | (PIPELINED | AGGREGATE) USING implementation_type_name) ';'
       ;
  
positive.code:     : ALTER PROCEDURE procedure_name COMPILE DEBUG? compiler_parameters_clause* (REUSE SETTINGS)? ';'
      ;
  
  create_procedure_body
      : (CREATE (OR REPLACE)?)? PROCEDURE procedure_name ('(' parameter (',' parameter)* ')')? 
        invoker_rights_clause? (IS | AS)
        (DECLARE? declare_spec* body | call_spec | EXTERNAL) ';'
      ;
  
negative.code: fragment W: [wW];
  fragment X: [xX];
  fragment Y: [yY];
  fragment Z: [zZ];