      *  Inserts a new node after the specified node. Returns
      *  the new node.
      */
-    private function insertAfter(node:GridRowNode, newNode:GridRowNode):void
+    public function insertAfter(node:GridRowNode, newNode:GridRowNode):void
     {
         newNode.prev = node;
         newNode.next = node.next;

        
        // This part can be optimized by a better search mechanism
        // Bookmarks, LRU node...etc...
        var cur:GridRowNode = findNearest(index);
        if (cur && cur.rowIndex == index)
            return cur;
        

     *  Searches for the node with the closest value less than the specified
     *  index. Searches backwards from the specified node.
     */
    private function findNearestLTEBefore(index:int, node:GridRowNode):GridRowNode
    {
        var cur:GridRowNode = node;
        while (cur && cur.rowIndex > index)
