if (readerClosed) throw new IOException("Reader has been closed; cannot read from a closed reader.");
if (readerClosed) throw new IOException("Reader has been closed; cannot read from a closed Reader.");
        public int read() throws IOException {            while (true){                synchronized (CircularCharBuffer.this){                    if (readerClosed) throw new IOException("Reader has been closed; cannot read from a closed reader.");                    int available = available();                    if (available > 0){                        int result = buffer[readPosition] & 0xffff;                        readPosition++;                        if (readPosition == buffer.length){                            readPosition = 0;                        }                        ensureMark();                        return result;                    } else if (writerClosed){                        return -1;                    }                }                try {                    Thread.sleep(100);                } catch(Exception x){                    throw new IOException("Blocking read operation interrupted.");                }            }                        }