public static GlobalMetadata loadGlobal(String name, String description, CommandMetadata defaultCommand, Iterable<CommandMetadata> defaultGroupCommands, Iterable<CommandGroupMetadata> groups) { ImmutableList.Builder<OptionMetadata> globalOptionsBuilder = ImmutableList.builder(); if (defaultCommand != null) { globalOptionsBuilder.addAll(defaultCommand.getGlobalOptions()); } for (CommandMetadata command : defaultGroupCommands) { globalOptionsBuilder.addAll(command.getGlobalOptions()); } for (CommandGroupMetadata group : groups) { for (CommandMetadata command : group.getCommands()) { globalOptionsBuilder.addAll(command.getGlobalOptions()); } } List<OptionMetadata> globalOptions = mergeOptionSet(globalOptionsBuilder.build()); return new GlobalMetadata(name, description, globalOptions, defaultCommand, defaultGroupCommands, groups); }