anchor.diff:  
   CLASS lcl_gui_page_main IMPLEMENTATION.
   
  -  METHOD diff.
  -
  -    DATA: lt_remote TYPE ty_files_tt,
  -          lt_local  TYPE ty_files_item_tt,
  -          lo_page   TYPE REF TO lcl_gui_page_diff,
  -          lo_repo   TYPE REF TO lcl_repo_online.
  -
  -    FIELD-SYMBOLS: <ls_remote> LIKE LINE OF lt_remote,
  -                   <ls_local>  LIKE LINE OF lt_local.
  -
  -
  -    lo_repo  ?= lcl_repo_srv=>get( iv_key ).
  -    lt_remote = lo_repo->get_files_remote( ).
  -    lt_local  = lo_repo->get_files_local( ).
  -
  -    READ TABLE lt_remote ASSIGNING <ls_remote>
  -      WITH KEY filename = is_file-filename
  -               path     = is_file-path.
  -    IF sy-subrc <> 0.
  -      _raise 'file not found remotely'.
  -    ENDIF.
  -
  -    READ TABLE lt_local ASSIGNING <ls_local>
  -      WITH KEY file-filename = is_file-filename
  -               file-path     = is_file-path.
  -    IF sy-subrc <> 0.
  -      _raise 'file not found locally'.
  -    ENDIF.
  -
  -    CREATE OBJECT lo_page
  -      EXPORTING
  -        is_local  = <ls_local>-file
  -        is_remote = <ls_remote>.
  -
  -    lcl_gui=>get( )->call_page( lo_page ).
  -
  -  ENDMETHOD.                    "diff
  -
  -  METHOD pull.
  -
  -    DATA: lo_repo TYPE REF TO lcl_repo_online.
  -
  -
  -    lo_repo ?= lcl_repo_srv=>get( iv_key ).
  -
  -    lo_repo->refresh( ).
  -
  -    lo_repo->deserialize( ).
  -
  -    COMMIT WORK.
  -
  -  ENDMETHOD.                    "pull
  -
  -  METHOD stage.
  -
  -    DATA: lo_repo  TYPE REF TO lcl_repo_online,
  -          lo_stage TYPE REF TO lcl_gui_page_stage.
  -
  -
  -    lo_repo ?= lcl_repo_srv=>get( iv_key ).
  -
  -* force refresh on stage, to make sure the latest local and remote files are used
  -    lo_repo->refresh( ).
  -
  -    CREATE OBJECT lo_stage
  -      EXPORTING
  -        io_repo = lo_repo.
  -
  -    lcl_gui=>get( )->call_page( lo_stage ).
  -
  -  ENDMETHOD.
  -
     METHOD render_obj_jump_link.
   
       DATA: lv_encode TYPE string.
  
positive.code:       RETURNING VALUE(ri_page) TYPE REF TO lif_gui_page
        RAISING   lcx_exception.
  
      METHODS abapgit_installation
        RAISING lcx_exception.
  
      METHODS repo_clone
        IMPORTING iv_url TYPE string
        RAISING   lcx_exception.
  
  ENDCLASS.
  
negative.code:             call_page( li_page ).
            WHEN gc_event_state-go_back.
              back( ).
            WHEN gc_event_state-no_more_act.
              " Do nothing, handling completed
            WHEN OTHERS.
              _raise 'Unknown action'.
          ENDCASE.
  