for (Map.Entry<String, Class<?>> command : commands.entrySet()) {
try {
final Class<?> clazz = command.getValue();
final Command annotation = clazz.getAnnotation(Command.class);
System.out.println(annotation.name() + ": " + annotation.description());
System.out.println("\tUsage: " + annotation.usage());
} catch (Exception e) {
// ignored = command not available
}
}
}