public function create(Stub $stub = null, $self = null): StubVerifier
    {
        if (!$stub) {
            $stub = $this->stubFactory->create();
        }

        $verifier = new StubVerifier(
            $stub,
            $this->spyFactory->create($stub),
            $this->matcherFactory,
            $this->matcherVerifier,
            $this->generatorVerifierFactory,
            $this->iterableVerifierFactory,
            $this->callVerifierFactory,
            $this->assertionRecorder,
            $this->assertionRenderer,
            $this->generatorAnswerBuilderFactory
        );

        if (func_num_args() > 1) {
            $verifier->setSelf($self);
        } else {
            $verifier->setSelf($verifier);
        }

        return $verifier;
    }