ColumnInfo[] (DualViewColumnInfo[] columns) { Collection<ColumnInfo<?, ?>> result = new ArrayList<>(); ColumnInfo firstColumn = columns[0]; ColumnInfo firstTreeColumn = new ColumnInfo(firstColumn.getName()) { @Override public Object valueOf(Object object) { return firstColumn.valueOf(object); } @Override public Class getColumnClass() { return TreeTableModel.class; } @Override public boolean isCellEditable(Object o) { return true; } }; result.add(firstTreeColumn); for (int i = 1; i < columns.length; i++) { DualViewColumnInfo column = columns[i]; if (column.shouldBeShownIsTheTree()) result.add(column); } return result.toArray(ColumnInfo.EMPTY_ARRAY); }