code: private synchronized boolean waitForContent()
          throws InterruptedIOException
      {
          if (_buffer!=null)
          {
              if (_buffer.hasRemaining())
                  return true;
               
               // recycle buffer
               recycle(_buffer);
               _buffer=null;
          }        
          
          while(!_closed && LazyList.size(_buffers)==0)
          {
              try
              {
                  this.wait(_timeout);
              }
              catch(InterruptedException e)
              {
                  log.debug(e);
                  throw new InterruptedIOException(e.toString());
              }
          }    
          
          if (_closed)
              return false;
              
          if (LazyList.size(_buffers)==0)
              throw new SocketTimeoutException();
          
          _buffer=(ByteBuffer)LazyList.get(_buffers, 0);
          _buffers=LazyList.remove(_buffers, 0);
          
          return true;
      }
docs: /* -------------------------------------------------------------------------------