private boolean recursiveBalanceScan(byte[] shifts, int depth, int primaryMask, int[] values, int base, int[] largeGroupCount, int[] countSpace) {
int idx = depth - 1;
if (idx < 0) {
boolean needsMoreSplitting = countSplitBalancePerBit(values, primaryMask, base, countSpace);
if (needsMoreSplitting) {
accumulateLargestGroups(countSpace, largeGroupCount);
}
return needsMoreSplitting;
}
return recursiveBalanceScan(shifts, idx, primaryMask, values, base, largeGroupCount, countSpace) |
recursiveBalanceScan(shifts, idx, primaryMask, values, base | (1<<shifts[idx]), largeGroupCount, countSpace);
}