anchor.diff:            CHANGING
               devclass       = lv_package ).
   
  +        li_enh_object ?= li_spot_ref.
  +        li_enh_object_docu ?= li_spot_ref.
  +
  +        li_enh_object_docu->set_shorttext( lv_enh_shtext ).
  +
           CASE lv_tool.
             WHEN cl_enh_tool_badi_def=>tooltype..
   
  +            io_xml->read( EXPORTING iv_name = 'PARENT_COMP'
  +                          CHANGING  cg_data = lv_parent ).
  +
               io_xml->read( EXPORTING iv_name = 'BADI_DATA'
                             CHANGING  cg_data = lt_enh_badi ).
   
               lo_badidef_tool ?= li_spot_ref.
  -
  -            lo_badidef_tool->if_enh_object_docu~set_shorttext( lv_enh_shtext ).
   
               LOOP AT lt_enh_badi INTO ls_enh_badi.
                 lo_badidef_tool->add_badi_def( ls_enh_badi ).
               ENDLOOP.
   
  -            lo_badidef_tool->if_enh_object~save( ).
  -            lo_badidef_tool->if_enh_object~activate( ).
  -            lo_badidef_tool->if_enh_object~unlock( ).
  -
             WHEN cl_enh_tool_hook_def=>tool_type.
   
               io_xml->read( EXPORTING iv_name = 'BADI_DATA'
  -                          CHANGING  cg_data = lt_hook_defs ).
  -
  -            lo_badi_hook ?= li_spot_ref.
  -
  -            lo_badi_hook->if_enh_object_docu~set_shorttext( lv_enh_shtext ).
  -
  -            LOOP AT lt_hook_defs ASSIGNING FIELD-SYMBOL(<ls_hook_def>).
  -              lo_badi_hook->add_hook_def( CORRESPONDING #( <ls_hook_def> ) ).
  +                          CHANGING  cg_data = lt_hook_definitions ).
  +
  +            lo_hookdef_tool ?= li_spot_ref.
  +
  +            LOOP AT lt_hook_definitions ASSIGNING FIELD-SYMBOL(<ls_hook_def>).
  +              lo_hookdef_tool->add_hook_def( CORRESPONDING #( <ls_hook_def> ) ).
               ENDLOOP.
   
  -            lo_badi_hook->if_enh_object~save( ).
  -            lo_badi_hook->if_enh_object~activate( ).
  -            lo_badi_hook->if_enh_object~unlock( ).
  -
           ENDCASE.
  +
  +        li_enh_object->save( ).
  +        li_enh_object->activate( ).
  +        li_enh_object->unlock( ).
   
         CATCH cx_enh_root INTO lx_root.
           lv_message = `Error occured while deserializing EHNS: `
  
positive.code: 
    METHOD lif_object~deserialize.
  
      DATA: lv_message      TYPE string,
            lv_parent       TYPE enhspotcompositename,
            lv_spot_name    TYPE enhspotname,
            lv_enh_shtext   TYPE string,
            ls_enh_badi     TYPE enh_badi_data,
            lt_enh_badi     TYPE enh_badi_data_it,
            lx_root         TYPE REF TO cx_root,
            lv_tool         TYPE enhspottooltype,
            lv_package      LIKE iv_package,
            li_spot_ref     TYPE REF TO if_enh_spot_tool,
            lo_badidef_tool TYPE REF TO cl_enh_tool_badi_def,
            lo_badi_hook    TYPE REF TO cl_enh_tool_hook_def,
            lt_hook_defs    TYPE enh_hook_def_ext_it.
  
  
      lv_spot_name = ms_item-obj_name.
  
      io_xml->read( EXPORTING iv_name = 'TOOL'
                    CHANGING  cg_data = lv_tool ).
      io_xml->read( EXPORTING iv_name = 'PARENT_COMP'
                    CHANGING  cg_data = lv_parent ).
      io_xml->read( EXPORTING iv_name = 'SHORTTEXT'
                    CHANGING  cg_data = lv_enh_shtext ).
  
  
negative.code: 
    METHOD lif_object~delete.
  
      DATA: lv_spot_name  TYPE enhspotname,
            lx_root       TYPE REF TO cx_root,
            li_enh_object TYPE REF TO if_enh_object.
  
      lv_spot_name = ms_item-obj_name.
  
      TRY.
          li_enh_object ?= cl_enh_factory=>get_enhancement_spot(
                              spot_name = lv_spot_name
                              lock      = abap_true ).
  
          li_enh_object->delete( nevertheless_delete = abap_true
                                 run_dark            = abap_true ).
  
          li_enh_object->unlock( ).
  
        CATCH cx_enh_root INTO lx_root.
          zcx_abapgit_exception=>raise( `Error occured while deleting EHNS: `
  