public AggregationOptionsBuilder usePooledObjects(ByteBufAllocator alloc, boolean preferCached) {
        requireNonNull(alloc, "alloc");
        if (cacheResult) {
            throw new IllegalStateException("Can't cache pooled objects");
        }
        this.alloc = alloc;
        this.preferCached = preferCached;
        return this;
    }
(Advanced users only) Sets the {@link ByteBufAllocator} that can be used to create
{@link PooledObjects} without making a copy. If the {@link HttpMessage} is already aggregated and cached,
the cached {@link AggregatedHttpMessage} is returned if {@code preferCached} is {@code true}.
if {@code preferCached} is {@code false}, an {@link IllegalStateException} will be raised.

<p>{@link PooledObjects} cannot be cached since they have their own life cycle.
Therefore, this method and {@link #cacheResult(boolean)} are mutually exclusive.
If {@link #cacheResult(boolean)} is enabled and this option is set, an {@link IllegalStateException} will
be raised.
core/src/main/java/com/linecorp/armeria/common/AggregationOptionsBuilder.java