}
Collections.sort(categories, this);
/*
* Prints the table header.
*/
final Vocabulary resources = Vocabulary.getResources(locale);
final TableWriter table = new TableWriter(out, TableWriter.SINGLE_VERTICAL_LINE);
table.setMultiLinesCells(true);
table.writeHorizontalSeparator();
table.write(resources.getString(VocabularyKeys.FACTORY));
table.nextColumn();
table.write(resources.getString(VocabularyKeys.AUTHORITY));
table.nextColumn();
table.write(resources.getString(VocabularyKeys.VENDOR));
table.nextColumn();
table.write(resources.getString(VocabularyKeys.IMPLEMENTATIONS));
table.nextLine();
table.nextLine(TableWriter.DOUBLE_HORIZONTAL_LINE);
final StringBuilder vendors = new StringBuilder();
final StringBuilder implementations = new StringBuilder();
for (final Iterator<Class<?>> it=categories.iterator(); it.hasNext();) {