anchor.diff:        "! <p>
         "! <em>sy-msg...</em> must be set right before calling!
         "! </p>
  -      raise_internal_error_from_sy RAISING lcx_2fa_auth_failed.
  +      raise_comm_error_from_sy RAISING lcx_2fa_communication_error.
     PRIVATE SECTION.
       DATA:
         mo_url_regex TYPE REF TO cl_abap_regex.
  
positive.code:     RAISE EXCEPTION TYPE lcx_2fa_token_del_failed. " Needs to be overwritten in subclasses
    ENDMETHOD.
  
    METHOD raise_internal_error_from_sy.
      DATA: lv_error_msg TYPE string.
  
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
              INTO lv_error_msg.
      RAISE EXCEPTION TYPE lcx_2fa_auth_failed
        EXPORTING
          iv_error_text = |Internal error: { lv_error_msg }| ##NO_TEXT.
    ENDMETHOD.
  ENDCLASS.
  
  
negative.code:     is_2fa_required IMPORTING iv_url             TYPE string
                                iv_username        TYPE string
                                iv_password        TYPE string
                      RETURNING VALUE(rv_required) TYPE abap_bool
                      RAISING   lcx_2fa_communication_error,
      "! Delete all previously created access tokens for abapGit
      "! @parameter iv_url | Repository url
      "! @parameter iv_username | Username
  