code: public static int decompressOneBlock(int[] outBlock, int[] inBlock,
                  int blockSize) {
                  int[] expAux = new int[blockSize * 2];
  
                  int expNum = inBlock[0] & 0x3ff;
                  int bits = (inBlock[0] >>> 10) & (0x1f);
  
                  // decompress the b-bit slots
                  int offset = HEADER_SIZE;
                  int compressedBits = 0;
                  if (bits == 0) {
                          Arrays.fill(outBlock, 0);
                  } else {
                          compressedBits = decompressBBitSlots(outBlock, inBlock,
                                  blockSize, bits);
                          // Note that blocksize must be ==128 in order to use
                          // decompressBBitSlotsWithHardCodes
                          // compressedBits =
                          // decompressBBitSlotsWithHardCodes(outBlock, inBlock,
                          // blockSize, bits);
                  }
                  offset += compressedBits;
  
                  // decompress exceptions
                  if (expNum > 0) {
                          compressedBits = decompressBlockByS16(expAux, inBlock,
                                  offset, expNum * 2);
                          offset += compressedBits;
  
                          for (int i = 0; i < expNum; i++) {
                                  int curExpPos = expAux[i];
                                  int curHighBits = expAux[i + expNum];
                                  outBlock[curExpPos] = (outBlock[curExpPos] & MASK[bits])
                                          | ((curHighBits & MASK[32 - bits]) << bits);
                          }
                  }
                  return offset;
          }
docs: Decompress one block using PForDelta
  
  @param outBlock
  the block that was decompressed
  @param inBlock
  the block to be decompressed
  @param blockSize
  the number of elements in the decompressed block
  @return the compressed size in bits