code: function off(name, callback) {
          var i, handlers, bindingName, names, hi;
  
          if (name) {
            names = name.toLowerCase().split(' ');
            i = names.length;
            while (i--) {
              name = names[i];
              handlers = bindings[name];
  
              // Unbind all handlers
              if (!name) {
                for (bindingName in bindings) {
                  toggleEvent(bindingName, false);
                  delete bindings[bindingName];
                }
  
                return self;
              }
  
              if (handlers) {
                // Unbind all by name
                if (!callback) {
                  handlers.length = 0;
                } else {
                  // Unbind specific ones
                  hi = handlers.length;
                  while (hi--) {
                    if (handlers[hi].func === callback) {
                      handlers = handlers.slice(0, hi).concat(handlers.slice(hi + 1));
                      bindings[name] = handlers;
                    }
                  }
                }
  
                if (!handlers.length) {
                  toggleEvent(name, false);
                  delete bindings[name];
                }
              }
            }
          } else {
            for (name in bindings) {
              toggleEvent(name, false);
            }
  
            bindings = {};
          }
  
          return self;
        }
docs: Unbinds an event listener to a specific event by name.
  
  @method off
  @param {String?} name Name of the event to unbind.
  @param {callback?} callback Callback to unbind.
  @return {Object} Current class instance.
  @example
  // Unbind specific callback
  instance.off('event', handler);
  
  // Unbind all listeners by name
  instance.off('event');
  
  // Unbind all events
  instance.off();