public static function forModel(
        $model,
        int $code = self::CODE_FOR_MODEL,
        Throwable $previous = null
    ): self {
        $message = self::DEFAULT_MESSAGE . self::MESSAGE_EXTENSION_FOR_MODEL;

        $message .= sprintf(
            self::MESSAGE_EXTENSION_TYPE_FORMAT,
            is_object($model) ? get_class($model) : gettype($model)
        );

        return new static($message, $code, $previous);
    }