void startCol(int span) throws SAXException {
        if (needSuppressStart()) {
            return;
        }
        switch (state) {
            case IN_TABLE_AT_START:
                hardWidth = true;
                columnCount = 0;
            // fall through
            case IN_TABLE_COLS_SEEN:
                state = State.IN_COL_IN_IMPLICIT_GROUP;
                break;
            case IN_COLGROUP:
                if (pendingColGroupSpan > 0) {
                    warn("A col element causes a span attribute with value "
                            + pendingColGroupSpan
                            + " to be ignored on the parent colgroup.");
                }
                pendingColGroupSpan = 0;
                state = State.IN_COL_IN_COLGROUP;
                break;
            default:
                suppressedStarts = 1;
                return;
        }
        int right = columnCount + Math.abs(span);
        Locator locator = new LocatorImpl(owner.getDocumentLocator());
        ColumnRange colRange = new ColumnRange("col", locator,
                columnCount, right);
        appendColumnRange(colRange);
        columnCount = right;
        realColumnCount = columnCount;
    }
Constructor.
@param owner reference back to the checker
src/nu/validator/checker/table/Table.java