code: private static int decodeULE128(InputStream in) throws IOException {
      in.mark(5);
      int result = 0;
      int shift = 0;
      while (shift < 32) {
        if (in.available() == 0) {
          // Buffer does not contain entire integer,
          // reset reader index and return -1.
          in.reset();
          return -1;
        }
        byte b = (byte) in.read();
        if (shift == 28 && (b & 0xF8) != 0) {
          break;
        }
        result |= (b & 0x7F) << shift;
        if ((b & 0x80) == 0) {
          return result;
        }
        shift += 7;
      }
      // Value exceeds Integer.MAX_VALUE
      in.reset();
      throw DECOMPRESSION_EXCEPTION;
    }
docs: Unsigned Little Endian Base 128 Variable-Length Integer Encoding