static long extractBits(long value, int offset, int count) {
    long shifted = value >>> offset;
    return count == Long.SIZE ? shifted : shifted & ((1L << count) - 1);
  }
static long extractBits(long value, int offset, int count)