docs: function (out, delegateId, cssClassPostfix, skinIcon, label, focusable) {
              // --------------------------------------------------- destructuring
  
              var cfg = this._cfg;
              var skinnableClass = this._skinnableClass;
  
              var waiAria = cfg.waiAria;
  
              // ------------------------------------------------------ processing
  
              // wrapper (opening) -----------------------------------------------
  
              var attributes = [];
  
              // Adding atdraggable="" to make sure clicking on the button does not start the drag operation
              // Using the atdraggable attribute directly instead of the aria.utils.Mouse.DRAGGABLE_ATTRIBUTE
              // variable because aria.utils.Mouse may not be loaded yet.
              attributes.push('atdraggable=""');
  
              attributes.push('class="' + [
                  'x' + skinnableClass + '_' + cssClassPostfix,
                  'x' + skinnableClass + '_' + cfg.sclass + '_' + cssClassPostfix
              ].join(' ') + '"');
  
              attributes.push(ariaUtilsDelegate.getMarkup(delegateId));
  
              var openingTagMarkup = '<span ' + attributes.join(' ') + '>';
  
              out.write(openingTagMarkup);
  
              // button ----------------------------------------------------------
  
              var iconConfiguration = {
                  icon : this._skinObj[skinIcon],
                  waiAria : waiAria
              };
  
              if (label) {
                  iconConfiguration.tooltip = label;
                  iconConfiguration.label = label;
              }
  
              if (label || focusable) {
                  iconConfiguration.role = 'button';
              }
  
              if (focusable) {
                  iconConfiguration.tabIndex = 0;
              }
  
  
              var button = new ariaWidgetsIcon(iconConfiguration, this._context, this._lineNumber);
  
              out.registerBehavior(button);
  
              button.writeMarkup(out);
  
              // wrapper (closing) -----------------------------------------------
  
              out.write('</span>');
  
              // ---------------------------------------------------------- return
  
              return button;
          }