bottomMaxBorder = Math.max( resolveBottomBorder( cell ),
bottomMaxBorder = Math.max( bbr.resolveBottomBorder( cell ),
	protected void closeLayout( )	{ 		if ( root.getChildrenCount( ) == 0 )		{			return;		} 		ArrayList lastDropCells = new ArrayList(); 		Iterator it = dropList.iterator( ); 		while ( it.hasNext( ) )		{			DropCellInfo dropCell = (DropCellInfo) it.next( );			for (int columnID = dropCell.cell.getColumnID(); columnID < dropCell.cell					.getColumnID()					+ dropCell.cell.getColSpan(); columnID++)				lastDropCells.add(new Integer(columnID));		}		if ( !isLast )		{			updateAllUnresolvedCellArea(lastDropCells);			root.setHeight( getCurrentBP( ) + getOffsetY( ) );			return;		}		// resolve bottom border for last row of this table		ArrayList list = this.dropList;		int bottomMaxBorder = 0;		ArrayList changed = new ArrayList( );		for ( int i = 0; i < list.size( ); i++ )		{			DropCellInfo cell = (DropCellInfo) list.get( i );			bottomMaxBorder = Math.max( resolveBottomBorder( cell.cell ),					bottomMaxBorder );			changed.add( cell.cell );		}				updateAllUnresolvedCellArea(lastDropCells);		if ( lastRowArea != null )		{			Iterator iter = lastRowArea.getChildren( );			while ( iter.hasNext( ) )			{				CellArea cell = (CellArea) iter.next( );				if ( !changed.contains( cell ) )				{					bottomMaxBorder = Math.max( resolveBottomBorder( cell ),							bottomMaxBorder );					changed.add( cell );				}			}		}		if ( bottomMaxBorder > 0 )		{			// update dimension of each cell in list			for ( int i = 0; i < changed.size( ); i++ )			{				CellArea cell = (CellArea) changed.get( i );				cell.setHeight( cell.getHeight( ) + bottomMaxBorder );			}			// update height of last row			if ( lastRowArea != null )			{				lastRowArea.setHeight( lastRowArea.getHeight( )						+ bottomMaxBorder );			}		}		// update dimension of table area		root.setHeight( getCurrentBP( ) + getOffsetY( ) + bottomMaxBorder );		// add left area to parent		// root.align();	}