private synchronized void requestNextBlocks() {
		if (this.requests == null || this.requestedPiece == null) {
			throw new IllegalStateException("Trying to request blocks out " +
					"of a piece download context!");
		}

		while (this.requests.remainingCapacity() > 0 &&
				this.lastRequestedOffset < this.requestedPiece.size()) {
			Message.RequestMessage request = Message.RequestMessage.craft(
					this.requestedPiece.getIndex(),
					this.lastRequestedOffset,
					Math.min(this.requestedPiece.size() -
							this.lastRequestedOffset,
						Message.RequestMessage.DEFAULT_REQUEST_SIZE));
			this.requests.add(request);
			this.send(request);
			this.lastRequestedOffset += request.getLength();
		}
	}