public static @NonNull List<DataType> order(@NonNull Comparator<? super DataType> comparator) {
        int compare = comparator.compare(DataType.TRANSIENT, DataType.NORMAL);
        if (compare > 0) {
            // transient first
            return TRANSIENT_FIRST_LIST;
        } else if (compare < 0) {
            // transient last
            return TRANSIENT_LAST_LIST;
        } else {
            // ??? - no defined order
            throw new IllegalStateException("Comparator " + comparator + " does not define an order between DataType.NORMAL and DataType.TRANSIENT!");
        }
    }
Gets a {@link List} of all {@link DataType}s, in order of greatest to least, as defined by
the {@code comparator}.

<p>Equivalent to calling {@link Arrays#sort(Object[], Comparator)} on
{@link DataType#values()}, but with the comparator
{@link Comparator#reversed() reversed}.</p>

@param comparator the comparator
@return the ordered data types
api/src/main/java/net/luckperms/api/query/dataorder/DataQueryOrder.java