Attempts to destroy any objects passed to it by removing all event listeners, removing them from the
DOM (if applicable) and calling their destroy functions (if available).  This method is primarily
intended for arguments of type {@link Ext.Element} and {@link Ext.Component}, but any subclass of
{@link Ext.util.Observable} can be passed in.  Any number of elements and/or components can be
passed into this function in a single call as separate arguments.

@param {Ext.Element/Ext.Component/Ext.Element[]/Ext.Component[]...} args
An {@link Ext.Element}, {@link Ext.Component}, or an Array of either of these to destroy
function() {
        var ln = arguments.length,
        i, arg;

        for (i = 0; i < ln; i++) {
            arg = arguments[i];
            if (arg) {
                if (Ext.isArray(arg)) {
                    this.destroy.apply(this, arg);
                }
                else if (Ext.isFunction(arg.destroy)) {
                    arg.destroy();
                }
                else if (arg.dom) {
                    arg.remove();
                }
            }
        }
    }