hintWidth[i] = minWidth[i];
hintWidth[i] = Math.max( minWidth[i], hintWidth[i] );
	public static int[] refineColumnWidth( TableLayoutDataProvider provider )	{		int[] hintWidth = provider.getHintColumnWidth( );		int[] minWidth = provider.getMinColumnWidth( );		int[] maxWidth = provider.getMaxColumnWidth( );		int availableWidth = provider.getAvailableWidth( );		assert hintWidth.length == minWidth.length;		assert minWidth.length == maxWidth.length;		checkValid( hintWidth, minWidth );		checkValid( maxWidth, minWidth );		int size = hintWidth.length;		int totalHintWidth = getSum( hintWidth );		int totalMinWidth = getSum( minWidth );		int totalMaxWidth = getSum( maxWidth );		if ( totalMinWidth >= availableWidth )		{			for ( int i = 0; i < size; i++ )			{				hintWidth[i] = minWidth[i];			}			return hintWidth;		}		if ( totalMaxWidth <= availableWidth )		{			for ( int i = 0; i < size; i++ )			{				hintWidth[i] = maxWidth[i];			}			return hintWidth;		}		if ( totalMaxWidth > availableWidth && totalMinWidth < availableWidth )		{			availableWidth = Math.max( totalMinWidth, availableWidth );			if ( totalHintWidth < availableWidth )			{				int T = availableWidth - totalHintWidth;				int delta = 0;				for ( int i = 0; i < size; i++ )				{					int xdelta = T * hintWidth[i] / totalHintWidth;					int n = hintWidth[i] + xdelta;					hintWidth[i] = n;					delta += xdelta;				}				if ( delta < T )				{					int xx = T - delta;					while ( xx > 0 )					{						for ( int i = 0; i < size; i++ )						{							if ( xx <= 0 )							{								break;							}							hintWidth[i]++;							xx--;						}					}				}			}			else if ( totalHintWidth > availableWidth )			{				int T = totalHintWidth - availableWidth;				int delta = 0;				for ( int i = 0; i < size; i++ )				{					int xdelta = T * hintWidth[i] / totalHintWidth;					int n = Math.max( hintWidth[i] - xdelta, minWidth[i] );					delta += hintWidth[i] - n;					hintWidth[i] = n;				}				if ( delta < T )				{					int xx = T - delta;					while ( xx > 0 )					{						for ( int i = 0; i < size; i++ )						{							if ( xx <= 0 )							{								break;							}							if ( hintWidth[i] > minWidth[i] )							{								hintWidth[i]--;								xx--;							}						}					}				}			}		}		return hintWidth;	}