@Override
	public int compareTo(Object o) {
		if (this == o) return 0;
		if (o instanceof CommandBase) {
			CommandBase cmd = (CommandBase) o;

			int c = (name.compareTo(cmd.name));
			if (c != 0) return c;

			if (options.size() != cmd.options.size()) return options.size() - cmd.options.size();
			for (CommandOption commandOption : options) {
				if (!cmd.options.contains(commandOption)) return Integer.MAX_VALUE;
			}
			return 0;
		}
		return toString().compareTo(o.toString());
	}