private static JObject serializeResult(TristateResult result) {
        JObject object = new JObject();
        object.add("result", result.result().name().toLowerCase(Locale.ROOT));

        if (result.processorClass() != null) {
            object.add("processorClass", result.processorClass().getName());
        }
        if (result.node() != null) {
            object.add("node", NodeJsonSerializer.serializeNode(result.node(), true));
        }

        if (result.overriddenResult() != null) {
            JsonArray overridden = new JsonArray();

            TristateResult next = result.overriddenResult();
            while (next != null) {
                overridden.add(serializeResult(next).toJson());
                next = next.overriddenResult();
            }

            object.add("overridden", overridden);
        }

        return object;
    }
The result of the permission check
common/src/main/java/me/lucko/luckperms/common/verbose/event/PermissionCheckEvent.java