anchor.diff:            lt_properties TYPE wdy_app_property_table.
   
   
  -    lo_xml = read_xml( is_item  = ms_item
  -                       it_files = it_files ).
  +    lo_xml = mo_files->read_xml( ).
   
       lo_xml->structure_read( CHANGING cg_structure = ls_app ).
       lo_xml->table_read( CHANGING ct_table = lt_properties ).
  
positive.code: 
    ENDMETHOD.                    "corr_insert
  
    METHOD filename.
  
      DATA: lv_obj_name TYPE string.
  
  
      lv_obj_name = is_item-obj_name.
  * handle namespaces
      REPLACE ALL OCCURRENCES OF '/' IN lv_obj_name WITH '#'.
  
      IF iv_extra IS INITIAL.
        CONCATENATE lv_obj_name '.' is_item-obj_type '.' iv_ext
          INTO rv_filename.                                   "#EC NOTEXT
      ELSE.
        CONCATENATE lv_obj_name '.' is_item-obj_type '.' iv_extra '.' iv_ext
          INTO rv_filename.                                   "#EC NOTEXT
      ENDIF.
      TRANSLATE rv_filename TO LOWER CASE.
  
    ENDMETHOD.                    "filename
  
    METHOD read_abap.
  
      DATA: lv_filename TYPE string,
            lv_abap     TYPE string.
  
      FIELD-SYMBOLS: <ls_abap> LIKE LINE OF it_files.
  
  
      CLEAR ct_abap[].
  
      lv_filename = filename( is_item  = is_item
                              iv_extra = iv_extra
                              iv_ext   = 'abap' ).            "#EC NOTEXT
  
      READ TABLE it_files ASSIGNING <ls_abap> WITH KEY filename = lv_filename.
      IF sy-subrc <> 0.
        IF iv_error = abap_true.
          _raise 'abap not found'.
        ELSE.
          RETURN.
        ENDIF.
      ENDIF.
      lv_abap = lcl_convert=>xstring_to_string_utf8( <ls_abap>-data ).
  
      SPLIT lv_abap AT gc_newline INTO TABLE ct_abap.
  
    ENDMETHOD.                    "read_abap
  
    METHOD abap_to_file.
  
      DATA: lv_source TYPE string.
  
  
      CONCATENATE LINES OF it_abap INTO lv_source SEPARATED BY gc_newline.
      CLEAR rs_file.
      rs_file-path = '/'.
      rs_file-filename = filename( is_item  = is_item
                                   iv_extra = iv_extra
                                   iv_ext   = 'abap' ).       "#EC NOTEXT
      rs_file-data = lcl_convert=>string_to_xstring_utf8( lv_source ).
  
    ENDMETHOD.                    "abap_to_file
  
    METHOD read_xml.
  
      DATA: lv_filename TYPE string,
            lv_xml      TYPE string.
  
      FIELD-SYMBOLS: <ls_xml> LIKE LINE OF it_files.
  
  
      lv_filename = filename( is_item  = is_item
                              iv_extra = iv_extra
                              iv_ext   = 'xml' ).             "#EC NOTEXT
  
      READ TABLE it_files ASSIGNING <ls_xml> WITH KEY filename = lv_filename.
      IF sy-subrc <> 0.
        _raise 'xml not found'.
      ENDIF.
  
      lv_xml = lcl_convert=>xstring_to_string_utf8( <ls_xml>-data ).
  
      CREATE OBJECT ro_xml
        EXPORTING
          iv_xml = lv_xml.
  
    ENDMETHOD.                    "read_xml
  
    METHOD xml_to_file.
  
      DATA: lv_xml TYPE string.
  
  
      lv_xml = io_xml->xml_render( iv_normalize = iv_normalize ).
      rs_file-path = '/'.
  
      rs_file-filename = filename( is_item  = is_item
                                   iv_extra = iv_extra
                                   iv_ext   = 'xml' ).        "#EC NOTEXT
  
      REPLACE FIRST OCCURRENCE
        OF '<?xml version="1.0" encoding="utf-16"?>'
        IN lv_xml
        WITH '<?xml version="1.0" encoding="utf-8"?>'.
      rs_file-data = lcl_convert=>string_to_xstring_utf8( lv_xml ).
  
    ENDMETHOD.                    "do
  
  ENDCLASS.                    "lcl_objects_super IMPLEMENTATION
  
  *----------------------------------------------------------------------*
  
negative.code: 
    METHODS:
      serialize
        RAISING lcx_exception,
      deserialize
        IMPORTING iv_package TYPE devclass
        RAISING   lcx_exception,
      delete
        RAISING lcx_exception,
  