code: function registerItem( { instance, item } ) {
        const key = `${instance}.${item}`;
        const pending = [];
  
        const state = {
           pages: addLoadingStateHandler( 'page', instance, item, pending, onChange ),
           widgets: addLoadingStateHandler( 'widget', instance, item, pending, onChange )
        };
  
        itemListeners[ key ] = [];
  
        function onChange() {
           if( instanceListeners.length > 0 || itemListeners[ key ].length > 0 ) {
              whenDebugInfoAvailable( debugInfo => {
                 const event = {
                    instance,
                    item,
                    pages: getActiveItems( 'pages', state.pages ),
                    widgets: getActiveItems( 'widgets', state.widgets )
                 };
  
                 instanceListeners.forEach( callListener );
                 itemListeners[ key ].forEach( callListener );
  
                 function getActiveItems( category, refs ) {
                    if( !debugInfo.aliases ) {
                       return {};
                    }
  
                    return tabulate( ref => {
                       const index = debugInfo.aliases[ category ][ ref ];
                       if( index === undefined ) {
                          const message = `${ref} not present in ${category} debug information`;
                          log.info( message );
                          return { info: message };
                       }
                       return debugInfo[ category ][ index ];
                    }, refs );
                 }
  
                 function callListener( listener ) {
                    listener( event );
                 }
              } );
           }
        }
     }
docs: ///////////////////////////////////////////////////////////////////////////////////////////////////////// 
  Register a bootstrapping item with the tooling instance.
  
  @param {ItemMeta} itemMeta
  an object identifying the bootstrapping item
  @memberof AxTooling