code: private int decodeNextBWTByte() {
          int mergedPointer = bwtCurrentMergedPointer;
          int nextDecodedByte =  mergedPointer & 0xff;
          bwtCurrentMergedPointer = bwtMergedPointers[mergedPointer >>> 8];
  
          if (blockRandomised) {
              if (--randomCount == 0) {
                  nextDecodedByte ^= 1;
                  randomIndex = (randomIndex + 1) % 512;
                  randomCount = Bzip2Rand.rNums(randomIndex);
              }
          }
          bwtBytesDecoded++;
  
          return nextDecodedByte;
      }
docs: Decodes a byte from the Burrows-Wheeler Transform stage. If the block has randomisation
  applied, reverses the randomisation.
  @return The decoded byte