if (readerClosed) throw new IOException("Reader has been closed; cannot skip characters on a closed reader.");
if (readerClosed) throw new IOException("Reader has been closed; cannot skip characters on a closed Reader.");
        public long skip(long n) throws IOException, IllegalArgumentException {                        while (true){                synchronized (CircularCharBuffer.this){                    if (readerClosed) throw new IOException("Reader has been closed; cannot skip characters on a closed reader.");                    int available = available();                    if (available > 0){                        int length = Math.min((int)n, available);                        int firstLen = Math.min(length, buffer.length - readPosition);                        int secondLen = length - firstLen;                        if (secondLen > 0){                            readPosition = secondLen;                        } else {                            readPosition += length;                        }                        if (readPosition == buffer.length) {                            readPosition = 0;                        }                        return length;                    } else if (writerClosed){                        return 0;                    }                }                try {                    Thread.sleep(100);                } catch(Exception x){                    throw new IOException("Blocking read operation interrupted.");                }            }        }