anchor.diff:      ;
   
   compound_trigger_block
  -    : COMPOUND TRIGGER declare_spec* timing_point_section+ END trigger_name
  +    : COMPOUND TRIGGER seq_of_declare_specs? timing_point_section+ END trigger_name
       ;
   
   timing_point_section
  
positive.code: function_body
      : 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 identifier ('(' parameter (',' parameter)* ')')? (IS | AS)
        (DECLARE? declare_spec* body | call_spec | EXTERNAL) ';'
      ;
  
  create_procedure_body
      : CREATE (OR REPLACE)? PROCEDURE procedure_name ('(' parameter (',' parameter)* ')')? 
        invoker_rights_clause? (IS | AS)
        (DECLARE? declare_spec* body | call_spec | EXTERNAL) ';'
      ;
  
  // Trigger DDLs
  
negative.code: 
  proc_decl_in_type
      : PROCEDURE procedure_name '(' type_elements_parameter (',' type_elements_parameter)* ')'
        (IS | AS) (call_spec | DECLARE? seq_of_declare_specs? body ';')
      ;
  
  func_decl_in_type
      : FUNCTION function_name ('(' type_elements_parameter (',' type_elements_parameter)* ')')?
        RETURN type_spec (IS | AS) (call_spec | DECLARE? seq_of_declare_specs? body ';')
      ;
  
  constructor_declaration
      : FINAL? INSTANTIABLE? CONSTRUCTOR FUNCTION type_spec
        ('(' (SELF IN OUT type_spec ',') type_elements_parameter (',' type_elements_parameter)*  ')')?
        RETURN SELF AS RESULT (IS | AS) (call_spec | DECLARE? seq_of_declare_specs? body ';')
      ;
  
  // Common Type Clauses
  