function init( overlay ) {
    if ( !atomicHelpers.setInitFlag( _dom ) ) {
      return standardType.UNDEFINED;
    }

    // TODO: Investigate a better method of handling optional elements.
    //       Banner is optional, so we don't want to throw a nice error
    //       when its DOM isn't found.
    try {
      _globalbanner = new GlobalBanner( _dom );
      _globalbanner.init();
    } catch ( err ) {
      // No Banner to initialize.
    }

    // Semi-opaque overlay that shows over the content when the menu flies out.
    _overlay = overlay;

    _globalSearch = new GlobalSearch( _dom );
    _globalSearch.addEventListener( 'expandBegin', _searchExpandBegin );
    _globalSearch.init();

    _megaMenu = new MegaMenu( _dom );
    _megaMenu.addEventListener( 'rootExpandBegin', _megaMenuExpandBegin );
    _megaMenu.addEventListener( 'rootCollapseEnd', _megaMenuCollapseEnd );
    _megaMenu.init();

    return this;
  }
/**
   * @param {HTMLNode} overlay
   *   Overlay to show/hide when mobile mega menu is shown.
   * @returns {Header|undefined} An instance,
   *   or undefined if it was already initialized.
   */
@param {HTMLNode} overlay
Overlay to show/hide when mobile mega menu is shown.
@returns {Header|undefined} An instance,
or undefined if it was already initialized.
@param { HTMLNode } overlay Overlay to show / hide when mobile mega menu is shown . @returns { Header|undefined } An instance or undefined if it was already initialized .
function init( overlay ) {
    if ( !atomicHelpers.setInitFlag( _dom ) ) {
      return standardType.UNDEFINED;
    }
    try {
      _globalbanner = new GlobalBanner( _dom );
      _globalbanner.init();
    } catch ( err ) {
    }
    _overlay = overlay;
    _globalSearch = new GlobalSearch( _dom );
    _globalSearch.addEventListener( 'expandBegin', _searchExpandBegin );
    _globalSearch.init();
    _megaMenu = new MegaMenu( _dom );
    _megaMenu.addEventListener( 'rootExpandBegin', _megaMenuExpandBegin );
    _megaMenu.addEventListener( 'rootCollapseEnd', _megaMenuCollapseEnd );
    _megaMenu.init();
    return this;
  }
function init ( overlay ) { if ( ! atomicHelpers . setInitFlag ( _dom ) ) { return standardType . UNDEFINED ; } try { _globalbanner = new GlobalBanner ( _dom ) ; _globalbanner . init ( ) ; } catch ( err ) { } _overlay = overlay ; _globalSearch = new GlobalSearch ( _dom ) ; _globalSearch . addEventListener ( 'expandBegin' , _searchExpandBegin ) ; _globalSearch . init ( ) ; _megaMenu = new MegaMenu ( _dom ) ; _megaMenu . addEventListener ( 'rootExpandBegin' , _megaMenuExpandBegin ) ; _megaMenu . addEventListener ( 'rootCollapseEnd' , _megaMenuCollapseEnd ) ; _megaMenu . init ( ) ; return this ; }
@param {HTMLNode} overlay
   Overlay to show/hide when mobile mega menu is shown.
@param { HTMLNode } overlay Overlay to show / hide when mobile mega menu is shown .
// TODO: Investigate a better method of handling optional elements. //       Banner is optional, so we don't want to throw a nice error //       when its DOM isn't found. // No Banner to initialize. // Semi-opaque overlay that shows over the content when the menu flies out.