pub fn compress_multi<Alloc: BrotliAlloc + Send + 'static, SliceW: SliceWrapper<u8> + Send + 'static + Sync>(
    params: &BrotliEncoderParams,
    owned_input: &mut Owned<SliceW>,
    output: &mut [u8],
    alloc_per_thread: &mut [SendAlloc<CompressionThreadResult<Alloc>, UnionHasher<Alloc>, Alloc, <MultiThreadedSpawner as BatchSpawnable<CompressionThreadResult<Alloc>, UnionHasher<Alloc>, Alloc, SliceW>>::JoinHandle>]
) -> Result<usize, BrotliEncoderThreadError>where
    <Alloc as Allocator<u8>>::AllocatedMemory: Send,
    <Alloc as Allocator<u16>>::AllocatedMemory: Send + Sync,
    <Alloc as Allocator<u32>>::AllocatedMemory: Send + Sync,