return new TableLayoutInfo(columnWidthResolver.resolve( tableWidth, avaWidth - marginWidth ));
return new TableLayoutInfo( handleColummVisibity( columnWidthResolver.resolve( tableWidth, avaWidth - marginWidth ) ) );
	private TableLayoutInfo resolveTableLayoutInfo(TableArea area)	{		assert(parent!=null);		int avaWidth = parent.getMaxAvaWidth( ) - parent.getCurrentIP( );		int parentMaxWidth = parent.getMaxAvaWidth( );		IStyle style = area.getStyle( );		validateBoxProperty( style );		int marginWidth = getDimensionValue( style				.getProperty( StyleConstants.STYLE_MARGIN_LEFT ) )				+ getDimensionValue( style						.getProperty( StyleConstants.STYLE_MARGIN_RIGHT ) );		int specifiedWidth = getDimensionValue( tableContent.getWidth( ), parentMaxWidth );		if(specifiedWidth + marginWidth > parentMaxWidth)		{			specifiedWidth = 0;		} 				boolean isInline = PropertyUtil.isInlineElement( content );		if ( specifiedWidth == 0 )		{			if(isInline)			{				if ( avaWidth - marginWidth > parentMaxWidth / 4 )				{					tableWidth = avaWidth - marginWidth;				}				else				{					tableWidth = parentMaxWidth - marginWidth;				}			}			else			{				tableWidth = avaWidth - marginWidth;			}			return new TableLayoutInfo(columnWidthResolver.resolve( tableWidth, tableWidth ));		}		else		{			if ( !isInline )			{				tableWidth = Math.min( specifiedWidth, avaWidth - marginWidth );				return new TableLayoutInfo(columnWidthResolver.resolve( tableWidth, avaWidth - marginWidth ));			}			else			{				tableWidth = Math.min( specifiedWidth, parentMaxWidth - marginWidth );				return new TableLayoutInfo(columnWidthResolver.resolve( tableWidth, parentMaxWidth - marginWidth ));			}		}	}