public static function create(
        string $dsn,
        string $username = null,
        string $passwd = null,
        array $options = null
    ): self {
        $defaultOptions = [
            \PDO::ATTR_STRINGIFY_FETCHES => false
        ];

        try {
            return new static(new \PDO($dsn, $username, $passwd, array_replace($defaultOptions, $options ?? [])));
        } catch (\Throwable $exception) {
            throw static::wrapException($exception);
        }
    }