@Override
    List<T> drainAll0(boolean withPooledObjects) {
        assert closed : getClass().getSimpleName() + " should be closed before publishing items";

        if (withPooledObjects) {
            for (T obj : objs) {
                PooledObjects.touch(obj);
            }
            return Collections.unmodifiableList(objs);
        } else {
            final ImmutableList.Builder<T> builder = ImmutableList.builderWithExpectedSize(objs.size());
            for (T obj : objs) {
                builder.add(PooledObjects.copyAndClose(obj));
            }
            return builder.build();
        }
    }
A {@link FixedStreamMessage} that aggregates an arbitrary number of objects.
The aggregated objects can be published after the stream is closed.
core/src/main/java/com/linecorp/armeria/internal/common/stream/AggregatingStreamMessage.java