public void CheckState(List <TableColumn> columns, GUITableEntry tableEntry, float availableWidth)
        {
            if (tableEntry.defaultColumnWidth > 0f)
            {
                columns.ForEach(c => { if (c.entry.defaultWidth == 0f)
                                       {
                                           c.entry.defaultWidth = tableEntry.defaultColumnWidth;
                                       }
                                });
            }

            if (columnSizes == null || columnSizes.Count != columns.Count)
            {
                columnSizes = columns.Select((column) => column.GetDefaultWidth()).ToList();
            }
            if (columnVisible == null || columnVisible.Count != columns.Count)
            {
                columnVisible = columns.Select((column) => column.entry.visibleByDefault).ToList();
            }
            if (totalWidth < availableWidth && !isBeingResized)
            {
                List <int> expandableColumns = new List <int> ();
                for (int i = 0; i < columns.Count; i++)
                {
                    if (columns[i].entry.expandWidth && columnSizes[i] < columns[i].entry.maxWidth)
                    {
                        expandableColumns.Add(i);
                    }
                }
                float addWidth = (availableWidth - totalWidth) / expandableColumns.Count;
                foreach (int i in expandableColumns)
                {
                    columnSizes[i] += addWidth;
                }
            }

            absoluteColumnSizes = columnSizes.Select((columnSize, i) =>
                                                     Mathf.Clamp(
                                                         columns[i].entry.relative ? columnSize * GUIHelpers.GetViewWidth() : columnSize,
                                                         columns[i].entry.minWidth,
                                                         columns[i].entry.maxWidth))
                                  .ToList();

            if (reorderableList != null)
            {
                reorderableList.draggable = sortByColumnIndex < 0;
            }
        }