public Builder description(Object... args) {
            List<String> parts = new ArrayList<>();

            for (Object o : args) {

                // special formatting for ContextSets instead of just #toString
                if (o instanceof ContextSet) {
                    ContextSet set = (ContextSet) o;

                    for (String value : set.getValues(DefaultContextKeys.SERVER_KEY)) {
                        parts.add("server=" + value);
                    }
                    for (String value : set.getValues(DefaultContextKeys.WORLD_KEY)) {
                        parts.add("world=" + value);
                    }

                    for (Context context : set) {
                        if (context.getKey().equals(DefaultContextKeys.SERVER_KEY) || context.getKey().equals(DefaultContextKeys.WORLD_KEY)) {
                            continue;
                        }
                        parts.add(context.getKey() + "=" + context.getValue());
                    }
                } else if (o instanceof Duration) {
                    parts.add(DurationFormatter.CONCISE.formatString((Duration) o));
                } else {
                    parts.add(String.valueOf(o));
                }
            }

            description(String.join(" ", parts));
            return this;
        }
Creates a new log entry builder

@return a new builder
common/src/main/java/me/lucko/luckperms/common/actionlog/LoggedAction.java