anchor.diff:      ;
   
   function_body
  -    : FUNCTION function_name ('(' parameter (',' parameter)* ')')?
  +    : FUNCTION identifier ('(' 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) ';'
       ;
   
   procedure_body
  -    : PROCEDURE procedure_name ('(' parameter (',' parameter)* ')')? 
  +    : PROCEDURE identifier ('(' parameter (',' parameter)* ')')? 
         (IS | AS)
         (DECLARE? declare_spec* body | call_spec | EXTERNAL) ';'
       ;
  
positive.code:     ;
  
  return_statement
      : RETURN condition?
      ;
  
  function_call
  
negative.code:     ;
  
  procedure_spec
      : PROCEDURE identifier ('(' parameter ( ',' parameter )* ')')? ';' 
      ;
  
  function_spec
      : FUNCTION identifier ('(' parameter ( ',' parameter)* ')')? RETURN type_spec (DETERMINISTIC)? (RESULT_CACHE)? ';' 
      ;
  
  package_obj_body
  