public function createComposite(array $names)
    {
        if (empty($names)) {
            throw new \InvalidArgumentException('Reporter names cannot be empty.');
        }

        return new CompositeReporter(
            array_merge(
                [$this->createWithOutput($this->output, array_shift($names))],
                array_map(function ($name) {
                    return $this->createWithOutput(new BufferedOutput(), $name);
                }, $names)
            ),
            $this->configuration,
            $this->output,
            $this->eventEmitter
        );
    }