private ExtendedCell copyBBECellInto(ByteBufferExtendedCell cell, int maxAlloc) {
    int size = cell.getSerializedSize();
    Preconditions.checkArgument(size >= 0, "negative size");
    // Callers should satisfy large allocations from JVM heap so limit fragmentation.
    if (size > maxAlloc) {
      return null;
    }
    Chunk c = null;
    int allocOffset = 0;
    while (true) {
      // Try to get the chunk
      c = getOrMakeChunk();
      // We may get null because the some other thread succeeded in getting the lock
      // and so the current thread has to try again to make its chunk or grab the chunk
      // that the other thread created
      // Try to allocate from this chunk
      if (c != null) {
        allocOffset = c.alloc(size);
        if (allocOffset != -1) {
          // We succeeded - this is the common case - small alloc
          // from a big buffer
          break;
        }
        // not enough space!
        // try to retire this chunk
        tryRetireChunk(c);
      }
    }
    return copyBBECToChunkCell(cell, c.getData(), allocOffset, size);
  }
Mostly a duplicate of {@link #copyCellInto(Cell, int)}} done for perf sake. It presumes
ByteBufferExtendedCell instead of Cell so we deal with a specific type rather than the super
generic Cell. Removes instanceof checks. Shrinkage is enough to make this inline where before
it was too big. Uses less CPU. See HBASE-20875 for evidence.
@see #copyCellInto(Cell, int)
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.java