public function assertThrows(
        string $class,
        callable $execute,
        callable $inspect = null
    ) : void {
        try {
            $execute();
        } catch (ExpectationFailedException $e) {
            throw $e;
        } catch (Throwable $e) {
            static::assertThat($e, new ConstraintException($class));

            if ($inspect !== null) {
                $inspect($e);
            }

            return;
        }
		
        static::assertThat(null, new ConstraintException($class));
    }