public static function withTypeInfo($value, int $code = 0, Throwable $previous = null): self
    {
        $message = self::DEFAULT_MESSAGE;

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

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