                 headerMask.x = maskShape.x;
                 headerMask.y = maskShape.y;
 
-				// If we have a vScroll only, we want the scrollbar to be below
-				// the header.
-				if (verticalScrollBar != null && verticalScrollBar.visible &&
-				   (horizontalScrollBar == null || !horizontalScrollBar.visible) && 
-				   headerVisible)
-				{
-	                headerMask.width += verticalScrollBar.getExplicitOrMeasuredWidth();
-				}
+                // If we have a vScroll only, we want the scrollbar to be below
+                // the header.
+                if (verticalScrollBar != null && verticalScrollBar.visible &&
+                   (horizontalScrollBar == null || !horizontalScrollBar.visible) && 
+                   headerVisible)
+                {
+                    headerMask.width += verticalScrollBar.getExplicitOrMeasuredWidth();
+                }
 
                 if (lockedRowContent)
                 {

            renderer = factory.newInstance();
            if (renderer)
            {
		renderer.styleName = c;
		factoryMap[renderer] = factory;
	    }
        }



        }

        var rowNum:Number = calculateDropIndex(event);
        if (lockedRowCount && rowNum < lockedRowCount)
        {
            if (dropIndicator.parent != lockedRowContent)
                lockedRowContent.addChild(DisplayObject(dropIndicator));
            dropIndicator.y = lockedRowContent.listItems[rowNum][0].y - 1

        }
        else
        {
            var rowCount:int = listItems.length;
            var partialRow:int = (rowCount > 0 && rowInfo[rowCount - offscreenExtraRowsBottom - 1].y + 
                                rowInfo[rowCount - offscreenExtraRowsBottom - 1].height >
                                listContent.heightExcludingOffsets - listContent.topOffset) ? 1 : 0;

            rowNum -= verticalScrollPosition + lockedRowCount;

            if (rowNum >= rowCount)
            {
                if (partialRow)
                    rowNum = rowCount - 1;
                else
                    rowNum = rowCount;
            }
        
            if (rowNum < 0)
                rowNum = 0;

            if (dropIndicator.parent != listContent)
                listContent.addChild(DisplayObject(dropIndicator));
            dropIndicator.y = calculateDropIndicatorY(rowCount, rowNum + offscreenExtraRowsTop);
        }
    }

    /**
     *  @private
     *  If there are locked rows but there weren't enough collection items, the iterator
     *  is not in the right place and needs fixing.
     */
    override protected function adjustAfterAdd(items:Array, location:int):Boolean
    {
        var retval:Boolean = super.adjustAfterAdd(items, location);
        if (lockedRowCount)
        {
            if (verticalScrollPosition > 0 && verticalScrollPosition >= location && location <= lockedRowCount)
            {
                if (verticalScrollPosition + lockedRowCount >= collection.length)
                {
                    // don't let adjustment take us beyond end of iterator
                    super.verticalScrollPosition = verticalScrollPosition - items.length;
                }
            }
            if (collection.length - items.length <= lockedRowCount && collection.length >= lockedRowCount 
                || location <= lockedRowCount
                || location == lockedRowCount + verticalScrollPosition)
            {
                try
                {
                    iterator.seek(CursorBookmark.FIRST, lockedRowCount + verticalScrollPosition);
                    if (!iteratorValid)
                    {
                        iteratorValid = true;
                        lastSeekPending = null;
                    }
                }
                catch(e:ItemPendingError)
                {
                    lastSeekPending = new ListBaseSeekPending(CursorBookmark.FIRST, lockedRowCount + verticalScrollPosition)
                    e.addResponder(new ItemResponder(seekPendingResultHandler, seekPendingFailureHandler,
                                                    lastSeekPending));
                    // trace("IPE in UpdateDisplayList");
                    iteratorValid = false;
                    // don't do anything, we'll repaint when the data arrives
                }
            }
        }
        return retval;
    }

    /**
     *  @private
     *  If there are locked rows but there weren't enough collection items, the iterator
     *  is not in the right place and needs fixing.
     */
    override protected function adjustAfterRemove(items:Array, location:int, requiresValueCommit:Boolean):Boolean
    {
        var adjustIterator:Boolean = false;

        if (lockedRowCount && listItems.length && listItems[0].length)
        {
            if (location <= lockedRowCount + verticalScrollPosition)
                adjustIterator = true;
            else
            {
                // special case when we have less than a screen full of stuff
                var firstUID:String = rowMap[listItems[0][0].name].uid;
            
                for (var i:int = 0; i < items.length; i++)
                {
                    var uid:String = itemToUID(items[i]);
                
                    if (uid == firstUID && verticalScrollPosition == 0)
                    {
                        adjustIterator = true;
                        break;
                    }
                }
            }
        }

        var retval:Boolean = super.adjustAfterRemove(items, location, requiresValueCommit);

        if (lockedRowCount)
        {
            if (verticalScrollPosition > 0 && location > lockedRowCount 
                && verticalScrollPosition <= lockedRowCount && verticalScrollPosition == maxVerticalScrollPosition )
            {
                super.verticalScrollPosition = verticalScrollPosition - items.length;
                adjustIterator = true;
            }
            if (adjustIterator)
            {
                try
                {
                    iterator.seek(CursorBookmark.FIRST, lockedRowCount + verticalScrollPosition);
                    if (!iteratorValid)
                    {
                        iteratorValid = true;
                        lastSeekPending = null;
                    }
                }
                catch(e:ItemPendingError)
                {
                    lastSeekPending = new ListBaseSeekPending(CursorBookmark.FIRST, lockedRowCount + verticalScrollPosition)
                    e.addResponder(new ItemResponder(seekPendingResultHandler, seekPendingFailureHandler,
                                                    lastSeekPending));
                    // trace("IPE in UpdateDisplayList");
                    iteratorValid = false;
                    // don't do anything, we'll repaint when the data arrives
                }
            }
        }

        return retval;
    }

}

