docs: function (scope, itfWrap) {
                  if (this._listeners == null) {
                      return;
                  }
                  // We must check itfWrap == null, so that it is not possible to unregister all the events of an object
                  // from its interface, if they have not been registered through that interface
                  if (scope == null && itfWrap == null) {
                      // remove all events
                      for (var evt in this._listeners) {
                          if (!this._listeners.hasOwnProperty(evt)) {
                              continue;
                          }
                          this._listeners[evt] = null; // remove array
                          delete this._listeners[evt];
                      }
                  } else {
                      // note that here, scope can be null (if itfWrap != null) we need to filter all events in this case
                      for (var evt in this._listeners) {
                          if (!this._listeners.hasOwnProperty(evt)) {
                              continue;
                          }
                          __removeCallback(this._listeners, evt, scope, null, itfWrap);
                      }
                  }
                  evt = null;
              }