private boolean putBlock(Block block) {
        if (lastBlock == null) {
            // The first block should contain the nextReadOffset
            if (!(block.index.startOffset() <= nextReadOffset && block.index.endOffset() > nextReadOffset)) {
                LOGGER.error("[BUG] The first block should contain the nextReadOffset, block={} nextReadOffset={}", block.index, nextReadOffset);
                return false;
            }
        } else if (lastBlock.index.endOffset() != block.index.startOffset()) {
            return false;
        }
        lastBlock = block;
        blocksMap.put(block.index.startOffset(), block);
        loadedBlockIndexEndOffset = block.index.endOffset();
        return true;
    }
Put block into the blocks

@param block {@link Block}
@return if the block is continuous to the last block, it will return true
s3stream/src/main/java/com/automq/stream/s3/cache/blockcache/StreamReader.java