code: private ReadFuture newReadFuture() {
          Queue<ReadFuture> readyReadFutures = getReadyReadFutures();
          Queue<ReadFuture> waitingReadFutures = getWaitingReadFutures();
          ReadFuture future;
          synchronized (readyReadFutures) {
              future = waitingReadFutures.poll();
              if (future == null) {
                  future = new DefaultReadFuture(this);
                  readyReadFutures.offer(future);
              }
          }
          return future;
      }
docs: TODO Add method documentation