code: function () {
              topic.subscribe("/focus", lang.hitch(this, "onPageFocus"));
              topic.subscribe("/new", lang.hitch(this, "onNew"));
              topic.subscribe("/deleted", lang.hitch(this, "onDeleted"));
  
              aspect.before(this.tabContainer, "closeChild", function (child) {
                  this.closing = true;
                  // TODO around is better but somehow does not work
                  setTimeout(function () {
                      //this.closing = false;
                  }.bind(this), 0);
              }.bind(this));
              aspect.after(this.tabContainer, "closeChild", function (value, args) {
                  this.closing = false;
                  this.onClose(args[0]);
              }.bind(this));
              aspect.after(this.tabContainer, "selectChild", function (promise, args) {
                  if (!this.closing) {
                      this.tabSelected(args[0]);
                  }
              }.bind(this));
  
  
              var menu = registry.byId(this.tabContainer.id + "_tablist_Menu");
  
              var me = this;
              menu.addChild(
                  new MenuItem({
                      label: messages["tabopener.closeall"],
                      ownerDocument: this.tabContainer.ownerDocument,
                      dir: this.tabContainer.dir,
                      lang: this.tabContainer.lang,
                      textDir: this.tabContainer.textDir,
                      onClick: function (evt) {
                          me.closeTabs();
                      }
                  })
              );
              menu.addChild(
                  new MenuItem({
                      label: messages["tabopener.closeothers"],
                      ownerDocument: this.tabContainer.ownerDocument,
                      dir: this.tabContainer.dir,
                      lang: this.tabContainer.lang,
                      textDir: this.tabContainer.textDir,
                      onClick: function (evt) {
                          var tabElement = this.getParent().currentTarget;
                          var tab = registry.byNode(tabElement);
                          me.closeTabs(tab.page);
                      }
                  })
              );
          }
docs: TODO there is also ctx. Is there a difference?