code: public int readReverse() throws IOException {
  		int b;
  		do {
  			canRead.block(0);
  			synchronized (this) {
  				if (error != null) throw error;
  				if (io == null) throw new IOException("IO closed");
  				// check if we reached the beginning of the file
  				if (bufferPosInFile == 0 && posInBuffer == minInBuffer) return -1;
  				if (posInBuffer == minInBuffer) {
  					// we are reading faster than buffering
  					if (currentRead != null)
  						canRead.restart();
  					else
  						readBufferBack();
  					b = -1;
  				} else {
  					b = buffer[--posInBuffer] & 0xFF;
  					if (currentRead == null && posInBuffer < buffer.length / 2 && bufferPosInFile > 0)
  						readBufferBack();
  				}
  			}
  		} while (b == -1);
  		return b;
  	}
docs: Read a byte backward.