public int compare(Object oA, Object oB) {
            if (oA == null && oB == null) {
                return 0;
            } else if (oA == null) {
                return -1;
            } else if (oB == null) {
                return 1;
            } else if (oA instanceof List) {
                return compareTo((List) oA, (List) oB);
            } else if (oA instanceof Set) {
                return compareTo((Set) oA, (Set) oB);
            } else if (oA instanceof Map) {
                return compareTo((Map) oA, (Map) oB);
            } else if (oA instanceof byte[]) {
                return compareTo((byte[]) oA, (byte[]) oB);
            } else {
                return compareTo((Comparable) oA, (Comparable) oB);
            }
        }