lib/Ext/data/NodeInterface.js
function(node, suppressEvents, suppressNodeUpdate) {
                    var me = this,
                        i, ln,
                        index,
                        oldParent,
                        ps;

                    // if passed an array or multiple args do them one by one
                    if (Ext.isArray(node)) {
                        for (i = 0, ln = node.length; i < ln; i++) {
                            me.appendChild(node[i], suppressEvents, suppressNodeUpdate);
                        }
                    } else {
                        // Make sure it is a record
                        node = me.createNode(node);

                        if (suppressEvents !== true && me.fireEvent("beforeappend", me, node) === false) {
                            return false;
                        }

                        index = me.childNodes.length;
                        oldParent = node.parentNode;

                        // it's a move, make sure we move it cleanly
                        if (oldParent) {
                            if (suppressEvents !== true && node.fireEvent("beforemove", node, oldParent, me, index) === false) {
                                return false;
                            }
                            oldParent.removeChild(node, null, false, true);
                        }

                        index = me.childNodes.length;
                        if (index === 0) {
                            me.setFirstChild(node);
                        }

                        me.childNodes.push(node);
                        node.parentNode = me;
                        node.nextSibling = null;

                        me.setLastChild(node);

                        ps = me.childNodes[index - 1];
                        if (ps) {
                            node.previousSibling = ps;
                            ps.nextSibling = node;
                            ps.updateInfo(suppressNodeUpdate);
                        } else {
                            node.previousSibling = null;
                        }

                        node.updateInfo(suppressNodeUpdate);

                        // As soon as we append a child to this node, we are loaded
                        if (!me.isLoaded()) {
                            me.set('loaded', true);
                        }
                        // If this node didn't have any childnodes before, update myself
                        else if (me.childNodes.length === 1) {
                            me.set('loaded', me.isLoaded());
                        }

                        if (suppressEvents !== true) {
                            me.fireEvent("append", me, node, index);

                            if (oldParent) {
                                node.fireEvent("move", node, oldParent, me, index);
                            }
                        }

                        return node;
                    }
                }
function(node, suppressEvents, suppressNodeUpdate) {
                    var me = this,
                        i, ln,
                        index,
                        oldParent,
                        ps;

                    // if passed an array or multiple args do them one by one
                    if (Ext.isArray(node)) {
                        for (i = 0, ln = node.length; i < ln; i++) {
                            me.appendChild(node[i], suppressEvents, suppressNodeUpdate);
                        }
                    } else {
                        // Make sure it is a record
                        node = me.createNode(node);

                        if (suppressEvents !== true && me.fireEvent("beforeappend", me, node) === false) {
                            return false;
                        }

                        index = me.childNodes.length;
                        oldParent = node.parentNode;

                        // it's a move, make sure we move it cleanly
                        if (oldParent) {
                            if (suppressEvents !== true && node.fireEvent("beforemove", node, oldParent, me, index) === false) {
                                return false;
                            }
                            oldParent.removeChild(node, null, false, true);
                        }

                        index = me.childNodes.length;
                        if (index === 0) {
                            me.setFirstChild(node);
                        }

                        me.childNodes.push(node);
                        node.parentNode = me;
                        node.nextSibling = null;

                        me.setLastChild(node);

                        ps = me.childNodes[index - 1];
                        if (ps) {
                            node.previousSibling = ps;
                            ps.nextSibling = node;
                            ps.updateInfo(suppressNodeUpdate);
                        } else {
                            node.previousSibling = null;
                        }

                        node.updateInfo(suppressNodeUpdate);

                        // As soon as we append a child to this node, we are loaded
                        if (!me.isLoaded()) {
                            me.set('loaded', true);
                        }
                        // If this node didn't have any childnodes before, update myself
                        else if (me.childNodes.length === 1) {
                            me.set('loaded', me.isLoaded());
                        }

                        if (suppressEvents !== true) {
                            me.fireEvent("append", me, node, index);

                            if (oldParent) {
                                node.fireEvent("move", node, oldParent, me, index);
                            }
                        }

                        return node;
                    }
                }
function ( node , suppressEvents , suppressNodeUpdate ) { var me = this , i , ln , index , oldParent , ps ; // if passed an array or multiple args do them one by one if ( Ext . isArray ( node ) ) { for ( i = 0 , ln = node . length ; i < ln ; i ++ ) { me . appendChild ( node [ i ] , suppressEvents , suppressNodeUpdate ) ; } } else { // Make sure it is a record node = me . createNode ( node ) ; if ( suppressEvents !== true && me . fireEvent ( "beforeappend" , me , node ) === false ) { return false ; } index = me . childNodes . length ; oldParent = node . parentNode ; // it's a move, make sure we move it cleanly if ( oldParent ) { if ( suppressEvents !== true && node . fireEvent ( "beforemove" , node , oldParent , me , index ) === false ) { return false ; } oldParent . removeChild ( node , null , false , true ) ; } index = me . childNodes . length ; if ( index === 0 ) { me . setFirstChild ( node ) ; } me . childNodes . push ( node ) ; node . parentNode = me ; node . nextSibling = null ; me . setLastChild ( node ) ; ps = me . childNodes [ index - 1 ] ; if ( ps ) { node . previousSibling = ps ; ps . nextSibling = node ; ps . updateInfo ( suppressNodeUpdate ) ; } else { node . previousSibling = null ; } node . updateInfo ( suppressNodeUpdate ) ; // As soon as we append a child to this node, we are loaded if ( ! me . isLoaded ( ) ) { me . set ( 'loaded' , true ) ; } // If this node didn't have any childnodes before, update myself else if ( me . childNodes . length === 1 ) { me . set ( 'loaded' , me . isLoaded ( ) ) ; } if ( suppressEvents !== true ) { me . fireEvent ( "append" , me , node , index ) ; if ( oldParent ) { node . fireEvent ( "move" , node , oldParent , me , index ) ; } } return node ; } }
Insert node(s) as the last child node of this node.

If the node was previously a child node of another parent node, it will be removed from that node first.

@param {Ext.data.NodeInterface/Ext.data.NodeInterface[]} node The node or Array of nodes to append.
@return {Ext.data.NodeInterface} The appended node if single append, or `null` if an array was passed.
Insert node ( s ) as the last child node of this node .