Checks that the specified object reference is instance of classes and
    throws a :py:class:`TypeError` if it is not.

    :param value: The object.
    :type value: object
    :param classes: The classes.
    :type classes: list(class)

def require_valid_type(value, *classes):
    """
    Checks that the specified object reference is instance of classes and
    throws a :py:class:`TypeError` if it is not.

    :param value: The object.
    :type value: object
    :param classes: The classes.
    :type classes: list(class)
    """

    if value is not None:
        valid = False
        for auxiliar_class in classes:
            if isinstance(value, auxiliar_class):
                valid = True
                break
        if not valid:
            raise TypeError()