code: @Override
      public int read() throws IOException {
          int r = read(singleByte, 0, 1);
          while (r == 0) {
              r = read(singleByte, 0, 1);
          }
          if (r > 0) {
              final byte b = singleByte[0];
              return b < 0 ? 256 + b : b;
          }
          return EOF;
      }
docs: Reads one <code>byte</code> from this input stream.
  
  @return the byte as an integer in the range 0 to 255. Returns -1 if EOF has been reached.
  @throws IOException
  if an I/O error occurs.