anchor.diff:    METHOD add.
       DATA ls_item TYPE ty_item.
   
  +    ASSERT iv_cmd IS INITIAL AND iv_sub IS NOT INITIAL
  +      OR   iv_cmd IS NOT INITIAL AND iv_sub IS INITIAL. " Only one supplied
  +
       ls_item-txt = iv_txt.
       ls_item-cmd = iv_cmd.
  +    ls_item-sub = iv_sub.
       APPEND ls_item TO mt_items.
     ENDMETHOD.
   
     METHOD render.
  -    DATA lo_html  TYPE REF TO lcl_html_helper.
  -    DATA lv_class TYPE string.
  -    FIELD-SYMBOLS <item> TYPE ty_item.
  +    DATA          lo_html   TYPE REF TO lcl_html_helper.
  +    DATA          lv_class  TYPE string.
  +    DATA          lb_last   TYPE abap_bool.
  +    FIELD-SYMBOLS <item>    TYPE ty_item.
   
       CREATE OBJECT lo_html.
   
  -    IF iv_tag IS INITIAL.
  -      RETURN.
  -    ENDIF.
  -
  -    lv_class = 'menu'.
  -    IF ib_right = abap_true.
  -      lv_class = lv_class && ' right'.
  -    ENDIF.
  -
  -    lo_html->add( |<{ iv_tag } class="{ lv_class }">| ).
  +    IF iv_as_droplist_with_label IS INITIAL.
  +      lv_class = 'menu'.
  +    ELSE.
  +      lv_class = 'dropdown'.
  +      IF ib_no_separator = abap_true.
  +        lv_class = lv_class && ' menu_end'.
  +      ENDIF.
  +    ENDIF.
  +
  +    lo_html->add( |<div class="{ lv_class }">| ).
  +
  +    IF iv_as_droplist_with_label IS NOT INITIAL.
  +      lo_html->add( |<button class="dropbtn">{ iv_as_droplist_with_label }</button>| ).
  +      lo_html->add( '<div class="dropdown_content">' ).
  +    ENDIF.
   
       LOOP AT mt_items ASSIGNING <item>.
  -      CLEAR lv_class.
  -      AT LAST.
  -        lv_class = ' class="menu_end"'.
  -      ENDAT.
  -
  -      lo_html->add( |<a{ lv_class } href="{ <item>-cmd }">{ <item>-txt }</a>| ).
  +      lb_last = boolc( sy-tabix = lines( mt_items ) ).
  +
  +      IF <item>-sub IS INITIAL.
  +        CLEAR lv_class.
  +        IF lb_last = abap_true AND iv_as_droplist_with_label IS INITIAL.
  +          lv_class = ' class="menu_end"'.
  +        ENDIF.
  +        lo_html->add( |<a{ lv_class } href="{ <item>-cmd }">{ <item>-txt }</a>| ).
  +      ELSE.
  +        lo_html->add( <item>-sub->render( iv_as_droplist_with_label = <item>-txt
  +                                          ib_no_separator           = lb_last ) ).
  +      ENDIF.
   
       ENDLOOP.
   
  -    lo_html->add( |</{ iv_tag }>| ).
  +    IF iv_as_droplist_with_label IS NOT INITIAL.
  +      lo_html->add( '</div>' ).
  +    ENDIF.
  +
  +    lo_html->add( '</div>' ).
       ro_html = lo_html.
   
     ENDMETHOD.
  
positive.code:     ro_html->add('  padding-right: 0.5em;').
      ro_html->add('}').
  
      ro_html->add('/* MISC AND REFACTOR */').
      ro_html->add('a.grey:link {').
      ro_html->add('  color: grey;').
  
negative.code: 
      CREATE OBJECT ro_html.
  
      ro_html->add( '<div class="mixed_height_bar right menu">' ).
  
      IF go_user->is_hidden( iv_key ) = abap_true.
        ro_html->add( '<a class="menu_end" href="sapevent:unhide?' && iv_key && '">Show</a>' ).
  