code: function(el, recurse, type) {
              // var oEl = (Y.Lang.isString(el)) ? Y.one(el) : el,
              var oEl = (Y.Lang.isString(el)) ?  Y.Selector.query(el, null, true) : el,
                  lis = this.getListeners(oEl, type), i, len, props, children, child;
  
              if (recurse && oEl) {
                  lis = lis || [];
                  children = Y.Selector.query('*', oEl);
                  i = 0;
                  len = children.length;
                  for (; i < len; ++i) {
                      child = this.getListeners(children[i], type);
                      if (child) {
                          lis = lis.concat(child);
                      }
                  }
              }
  
              if (lis) {
                  i = 0;
                  len = lis.length;
                  for (; i < len; ++i) {
                      props = lis[i];
                      props.detachAll();
                      remove(props.el, props.type, props.fn, props.capture);
                      delete _wrappers[props.key];
                      delete _el_events[props.domkey][props.key];
                  }
              }
  
          }
docs: Removes all listeners attached to the given element via addListener.
  Optionally, the node's children can also be purged.
  Optionally, you can specify a specific type of event to remove.
  @method purgeElement
  @param {HTMLElement} el the element to purge
  @param {boolean} recurse recursively purge this element's children
  as well.  Use with caution.
  @param {string} type optional type of listener to purge. If
  left out, all listeners will be removed
  @static