public Class getColumnClass(int columnIndex) {
            if (columns != null) {
                // if editor class is specified, using that...
                Class editorClass = columns[columnIndex].getEditorClass();
                if (editorClass != null) {
                    return editorClass;
                }
            }
            // otherwise searching for an object in the column
            Object columnObj = null;
            if (data != null) {
                String fieldName = (String) columns[columnIndex].
                getYProperty().get(YIComponent.MVC_NAME);
                // iterating rows until a not-null object in the column is found...
                for (int i=0; i < data.size() && columnObj == null; i++) {
                    Object row = data.get(i);
                    if (row != null) {
                        try {
                            columnObj = YCoreToolkit.getBeanValue(row, fieldName);
                        } catch (Exception ignored) {
                            // don't care about exceptions, the row may hold null values... 
                            // we just want to dig out some Object from any row 
                        }
                    }
                }
            }
            if (columnObj != null) {
                return columnObj.getClass();
            } else {
                return Object.class;
            }
        }