private int innerCompare(Object[] o1, Object[] o2) {
        for (int i = 0; i < o1.length; i++) {
            if (o1[i] == null) {
                return o2[i] == null ? 0 : nullsLast[i] ? 1 : -1;
            } else if (o2[i] == null) {
                return nullsLast[i] ? -1 : 1;
            } else {
                int res;
                res = naturalOrder.compare(o1[i], o2[i]);
                if (res != 0) {
                    return asc[i] ? res : -res;
                }
            }
        }
        return 0;
    }
{@code MultiComparator} compares arrays

@param <T> element type
@author tiwe
querydsl-collections/src/main/java/com/querydsl/collections/MultiComparator.java