<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def of_type(self, classinfo):
        '''Filters elements according to whether they are of a certain type.

        Note: This method uses deferred execution.

        Args:
            classinfo: If classinfo is neither a class object nor a type object
                it may be a tuple of class or type objects, or may recursively
                contain other such tuples (other sequence types are not
                accepted).

        Returns:
            A Queryable over those elements of the source sequence for which
            the predicate is True.

        Raises:
            ValueError: If the Queryable is closed.
            TypeError: If classinfo is not a class, type, or tuple of classes,
                types, and such tuples.
        '''
        if self.closed():
            raise ValueError("Attempt to call of_type() on a closed "
                             "Queryable.")

        if not is_type(classinfo):
            raise TypeError("of_type() parameter classinfo={0} is not a class "
                "object or a type objector a tuple of class or "
                "type objects.".format(classinfo))

        return self.where(lambda x: isinstance(x, classinfo))