docs: function(notChained) {
          var instance = this,
              superDestroy;
          if (!instance._destroyed) {
              superDestroy = function(constructor) {
                  // don't call `hasOwnProperty` directly on obj --> it might have been overruled
                  Object.prototype.hasOwnProperty.call(constructor.prototype, '_destroy') && constructor.prototype._destroy.call(instance);
                  if (!notChained && constructor.$$super) {
                      instance.__classCarier__ = constructor.$$super.constructor;
                      superDestroy(constructor.$$super.constructor);
                  }
              };
              // instance.detachAll();  <-- is what Event will add
              // instance.undefAllEvents();  <-- is what Event will add
              superDestroy(instance.constructor);
              protectedProp(instance, '_destroyed', true);
          }
          return instance;
      }