docs: public static long[] invgrayI(long[] v) {
      final int last = v.length - 1;
      int o;
      // Sub word level:
      for(o = 1; o < Long.SIZE; o <<= 1) {
        for(int i = 0; i < last; i++) {
          v[i] ^= (v[i] >>> o) ^ (v[i + 1] << (Long.SIZE - o));
        }
        v[last] ^= (v[last] >>> o);
      }
      // Word level:
      for(o = 1; o <= last; o <<= 1) {
        for(int i = o; i <= last; i++) {
          v[i - o] ^= v[i];
        }
      }
      return v;
    }