code: public ByteBuffer byteBuffer(Key key, int minSize) {
  		minSize = Math.max(minSize, GLOBAL_MIN_SIZE);
  		
  		ByteBuffer r = _byteBuffers[key.ordinal()];
  		if (r == null || r.capacity() < minSize) {
  			r = ByteBuffer.allocate(minSize);
  		} else {
  			_byteBuffers[key.ordinal()] = null;
  			r.clear();
  		}
  		return r;
  	}
docs: Creates or re-uses a {@link ByteBuffer} that has a minimum size. Calling
  this method multiple times with the same key will always return the
  same buffer, as long as it has the minimum size and is marked to be
  re-used. Buffers that are allowed to be re-used should be released using
  {@link #releaseByteBuffer(Key, ByteBuffer)}.
  @param key the buffer's identifier
  @param minSize the minimum size
  @return the {@link ByteBuffer} instance
  @see #charBuffer(Key, int)