docs: function getEventSpies ( observed, namespaces ) {
      var eventSpies,
          baseEventNames = _getBackboneSelectBaseEventNames();
  
      function _getTargetedEventSpies ( observed, eventNames ) {
          var eventSpies = _createSpyObj( eventNames );
  
          _.each( eventNames, function ( eventName ) {
              observed.listenTo( observed, eventName, eventSpies[eventName] );
          } );
  
          return eventSpies;
      }
  
      function _getWildcardEventSpies ( observed, baseEventNames, namespaces ) {
          var wildcardEventNames = _.map( baseEventNames, function ( baseEventName ) {
                  return baseEventName + ":*";
              } ),
              eventSpies = _createSpyObj( wildcardEventNames );
  
          _.each( baseEventNames, function ( baseEventName ) {
              var eventNameVariations = [baseEventName].concat( _getNamespacedEventNames( baseEventName, namespaces ) );
              _.each( eventNameVariations, function ( eventName ) {
                  observed.listenTo( observed, eventName, eventSpies[baseEventName + ":*"]);
              } );
          } );
  
          return eventSpies;
      }
  
      function _getStarEventSpy ( observed, eventNames ) {
          var eventSpy = sinon.spy();
  
          _.each( eventNames, function ( eventName ) {
              observed.listenTo( observed, eventName, eventSpy );
          } );
  
          return { "*": eventSpy };
      }
  
      function _getEventSpies( observed, baseEventNames, namespaces ) {
          var targetedEventSpies, wildcardEventSpies, starEventSpy,
              eventNames = _getAllEventNames( baseEventNames, namespaces );
  
          targetedEventSpies = _getTargetedEventSpies( observed, eventNames );
          wildcardEventSpies = _getWildcardEventSpies( observed, baseEventNames, namespaces );
          starEventSpy = _getStarEventSpy( observed, eventNames );
  
          return _.extend( targetedEventSpies, wildcardEventSpies, starEventSpy );
      }
  
      namespaces || ( namespaces = ["selected"] );
      if ( _.isString( namespaces ) ) namespaces = [ namespaces ];
  
      if ( _.isArray( observed ) ) {
          eventSpies = new HashTableForBackboneEntities();
          _.each( observed, function ( singleObserved ) {
              eventSpies._set( singleObserved, _getEventSpies( singleObserved, baseEventNames, namespaces ) );
          } );
      } else {
          eventSpies = _getEventSpies( observed, baseEventNames, namespaces );
      }
  
      return eventSpies;
  }