     	                                                       layoutItem.maxSize.y );
     	return percentHeight < height ? percentHeight : height;
     }
+    
+    private static function sizeLayoutItem(layoutItem:ILayoutItem, height:Number, 
+                                           verticalAlign:String, restrictedHeight:Number, 
+                                           width:Number, variableColumnWidth:Boolean, 
+                                           columnWidth:Number):void
+    {
+        var newHeight:Number = NaN;
+        
+        // if verticalAlign is "justify" or "contentJustify", 
+        // restrict the height to restrictedHeight.  Otherwise, 
+        // size it normally
+        if (verticalAlign == VerticalAlign.JUSTIFY ||
+            verticalAlign == VerticalAlign.CONTENT_JUSTIFY)
+        {
+            newHeight = restrictedHeight;
+        }
+        else
+        {
+            if (hasPercentHeight(layoutItem))
+               newHeight = calculatePercentHeight(layoutItem, height);   
+        }
+        
+        if (variableColumnWidth)
+            layoutItem.setActualSize(width, newHeight);
+        else
+            layoutItem.setActualSize(columnWidth, newHeight);
+    }
         
     //--------------------------------------------------------------------------
     //

                                                                spaceToDistribute,
                                                                totalPercentWidth,
                                                                childInfoArray);
            for each (childInfo in childInfoArray)
            {
            	newHeight = NaN;
            	if (hasPercentHeight(childInfo.layoutItem))
            	   newHeight = calculatePercentHeight(childInfo.layoutItem, height);

                childInfo.layoutItem.setActualSize(childInfo.size, newHeight);
            }
        }
        return spaceToDistribute;

        var maxY:Number = 0;     
        var firstColInView:int = -1;
        var lastColInView:int = -1;
                
        for (var index:int = 0; index < count; index++)
        {
            layoutItem = layoutTarget.getLayoutItemAt(index);
            if (!layoutItem || !layoutItem.includeInLayout)
                continue;
                
            // Set the layout item's position
            var y:Number = (contentHeight - layoutItem.actualSize.y) * vAlign;
            layoutItem.setActualPosition(x, y);
            
            // Update maxX,Y, first,lastVisibleIndex, and x
            var dx:Number = layoutItem.actualSize.x;
            var dy:Number = layoutItem.actualSize.y;
            maxX = Math.max(maxX, x + dx);
            maxY = Math.max(maxY, y + dy);            
            if (!clipContent || 
