static Vector<String> bitsToStrings(BitSet arg) {
        int len = arg.length();
        int swaths = countSwaths(arg);
        Vector<String> result = new Vector<>(swaths);

        int i = 0;
        boolean flipped = false;
        while (i < len) {
            boolean current = arg.get(i);
            int j;
            if (!flipped) {
                if (current || (i > 0)) {
                    String chunk = bitsToString(current, 0);
                    result.add(chunk);
                }
            }
            if (current) {
                j = arg.nextClearBit(i + 1);
            } else {
                j = arg.nextSetBit(i + 1);
            }
            if (j == -1) {
                // no such bit found in the remainder of the bitset.
                j = len;
            }
            if (j >= i + 72*72*72) {
                j  = i + 72*72*72 - 1;
                flipped = false;
            } else {
                flipped = true;
            }
            String chunk = bitsToString(!current, j - i);
            result.add(chunk);
            i = j;
        }
        result.trimToSize();
        return result;
    }