Tests if the given key-value pairs (items) are instances of the given ``target_type``.
        Per default this function yields whether ``True`` or ``False`` depending on the fact if all
        items withstand the validation or not. Per default the validation / evaluation is
        short-circuit and will return as soon an item evaluates to ``False``.

        When ``raise_ex`` is set to ``True`` the function will raise a meaningful error message
        after the first item evaluates to ``False`` (short-circuit).

        When ``summary`` is set to ``False`` a dictionary is returned containing the individual
        evaluation result of each item (non short-circuit).

        Examples:


            >>> Validator.instance_of(my_str='str', my_str2='str2', target_type=str)
            True
            >>> Validator.instance_of(my_str1='str', target_type=int)
            False
            >>> Validator.instance_of(my_str=None, raise_ex=True, target_type=str)
            Traceback (most recent call last):
                ...
            ValueError: 'my_str' (NoneType) is not an instance of type 'str'
            >>> Validator.instance_of(my_str='a', my_str2=1, raise_ex=True, target_type=str)
            Traceback (most recent call last):
                ...
            ValueError: 'my_str2' (int) is not an instance of type 'str'
            >>> (Validator.instance_of(
            ...     my_str='str', my_str2='str2', non_str=5, target_type=str, summary=False
            ... )
            ... == {'my_str': True, 'my_str2': True, 'non_str': False})
            True

        Args:
            raise_ex (bool, optional): If set to ``True`` an exception is raised if at least one
            item is validated to ``False`` (works short-circuit and will abort the validation when
            the first item is evaluated to ``False``).

            summary (bool, optional): If set to ``False`` instead of returning just a single
            `bool` the validation will return a dictionary containing the individual evaluation
            result of each item.

            target_type (type): The target type to test the values against.

        Returns:
            (boolean or dictionary): ``True`` when the value was successfully validated; ``False``
                otherwise.
            If ``summary`` is set to ``False`` a dictionary containing the individual evaluation
            result of each item will be returned.
            If ``raise_ex`` is set to True, instead of returning False a meaningful error will be
            raised.

def instance_of(target_type: Optional[type] = None, raise_ex: bool = False,
                    summary: bool = True, **items: Any) -> ValidationReturn:
        """
        Tests if the given key-value pairs (items) are instances of the given ``target_type``.
        Per default this function yields whether ``True`` or ``False`` depending on the fact if all
        items withstand the validation or not. Per default the validation / evaluation is
        short-circuit and will return as soon an item evaluates to ``False``.

        When ``raise_ex`` is set to ``True`` the function will raise a meaningful error message
        after the first item evaluates to ``False`` (short-circuit).

        When ``summary`` is set to ``False`` a dictionary is returned containing the individual
        evaluation result of each item (non short-circuit).

        Examples:


            >>> Validator.instance_of(my_str='str', my_str2='str2', target_type=str)
            True
            >>> Validator.instance_of(my_str1='str', target_type=int)
            False
            >>> Validator.instance_of(my_str=None, raise_ex=True, target_type=str)
            Traceback (most recent call last):
                ...
            ValueError: 'my_str' (NoneType) is not an instance of type 'str'
            >>> Validator.instance_of(my_str='a', my_str2=1, raise_ex=True, target_type=str)
            Traceback (most recent call last):
                ...
            ValueError: 'my_str2' (int) is not an instance of type 'str'
            >>> (Validator.instance_of(
            ...     my_str='str', my_str2='str2', non_str=5, target_type=str, summary=False
            ... )
            ... == {'my_str': True, 'my_str2': True, 'non_str': False})
            True

        Args:
            raise_ex (bool, optional): If set to ``True`` an exception is raised if at least one
            item is validated to ``False`` (works short-circuit and will abort the validation when
            the first item is evaluated to ``False``).

            summary (bool, optional): If set to ``False`` instead of returning just a single
            `bool` the validation will return a dictionary containing the individual evaluation
            result of each item.

            target_type (type): The target type to test the values against.

        Returns:
            (boolean or dictionary): ``True`` when the value was successfully validated; ``False``
                otherwise.
            If ``summary`` is set to ``False`` a dictionary containing the individual evaluation
            result of each item will be returned.
            If ``raise_ex`` is set to True, instead of returning False a meaningful error will be
            raised.
        """
        if not target_type:
            raise ValueError("Argument 'target_type' is None")

        return Validator.__test_all(
            condition=lambda _, val: isinstance(val, cast(type, target_type)),
            formatter=(
                lambda name, val:
                "'{varname}' ({actual}) is not an instance of type '{ttype}'".format(
                    varname=name,
                    actual=type(val).__name__,
                    ttype=cast(type, target_type).__name__
                )
            ),
            raise_ex=raise_ex,
            summary=summary,
            **items
        )