function removeObserverByEntry(observerState, entry) {
	  return observerState.withMutations(function (map) {
	    var id = entry.get('id');
	    var storeDeps = entry.get('storeDeps');

	    if (storeDeps.size === 0) {
	      map.update('any', function (anyObsevers) {
	        return anyObsevers.remove(id);
	      });
	    } else {
	      storeDeps.forEach(function (storeId) {
	        map.updateIn(['stores', storeId], function (observers) {
	          if (observers) {
	            // check for observers being present because reactor.reset() can be called before an unwatch fn
	            return observers.remove(id);
	          }
	          return observers;
	        });
	      });
	    }

	    map.removeIn(['observersMap', id]);
	  });
	}
Removes an observer entry by id from the observerState
@param {ObserverState} observerState
@param {Immutable.Map} entry
@return {ObserverState}