public function received($value = null): ?EventCollection
    {
        $cardinality = $this->cardinality;
        $argumentCount = func_num_args();

        if (0 === $argumentCount) {
            $arguments = [];
        } else {
            $value = $this->matcherFactory->adapt($value);
            $arguments = [$value];
        }

        if ($result = $this->checkReceived(...$arguments)) {
            return $result;
        }

        return $this->assertionRecorder->createFailure(
            $this->assertionRenderer
                ->renderGeneratorReceived($this->subject, $cardinality, $value)
        );
    }