StringBuilder buf = new StringBuilder();
final Column[] columns = Column.values();
for (Section section : getSections(configManager)) {
for (IOption option : getSectionOptions(configManager, section)) {
buf.append(column.ordinal() == 0 ? startDelim : midDelim);
pad(buf, getColumnDisplayFunction().apply(column),
align.computeIfAbsent(column, c -> false) ? calculateMaxWidth(column, column.name()) : 0);
sepLine.append(column.ordinal() == 0 ? startDelim : midDelim);
pad(sepLine, "", maxWidths.getOrDefault(column, 0), '-');
for (IOption option : options) {
for (Column column : columns) {
buf.append(column.ordinal() == 0 ? startDelim : midDelim);
if (column == Column.SECTION) {
center(buf, extractValue(column, option), maxWidths.getOrDefault(column, 0));