    /*!
     * Ext JS Library 3.3.0
     * Copyright(c) 2006-2010 Ext JS, Inc.
     * licensing@extjs.com
     * http://www.extjs.com/license
     */
    /**
     * @class Ext.CompositeElementLite
     */
    Ext.apply(Ext.CompositeElementLite.prototype, {
        addElements : function(els, root){
            if(!els){
                return this;
            }
            if(typeof els == "string"){
                els = Ext.Element.selectorFunction(els, root);
            }
            var yels = this.elements;
            Ext.each(els, function(e) {
                yels.push(Ext.get(e));
            });
            return this;
        },

        /**
         * Returns the first Element
         * @return {Ext.Element}
         */
        first : function(){
            return this.item(0);
        },

        /**
         * Returns the last Element
         * @return {Ext.Element}
         */
        last : function(){
            return this.item(this.getCount()-1);
        },

        /**
         * Returns true if this composite contains the passed element
         * @param el {Mixed} The id of an element, or an Ext.Element, or an HtmlElement to find within the composite collection.
         * @return Boolean
         */
        contains : function(el){
            return this.indexOf(el) != -1;
        },

        /**
        * Removes the specified element(s).
        * @param {Mixed} el The id of an element, the Element itself, the index of the element in this composite
        * or an array of any of those.
        * @param {Boolean} removeDom (optional) True to also remove the element from the document
        * @return {CompositeElement} this
        */
        removeElement : function(keys, removeDom){
            var me = this,
                els = this.elements,
                el;
            Ext.each(keys, function(val){
                if ((el = (els[val] || els[val = me.indexOf(val)]))) {
                    if(removeDom){
                        if(el.dom){
                            el.remove();
                        }else{
                            Ext.removeNode(el);
                        }
                    }
                    els.splice(val, 1);
                }
            });
            return this;
        }
    });