def __ror__(self, other):
        return Union[other, self]
# Python-version-specific alias (Python 2: unicode; Python 3: str)
Text = str
# Constant that's True when type checking, but False here.
TYPE_CHECKING = False
class IO(Generic[AnyStr]):
    """Generic base class for TextIO and BinaryIO.
    This is an abstract, generic version of the return of open().
    NOTE: This does not distinguish between the different possible
    classes (text vs. binary, read vs. write vs. read/write,
    append-only, unbuffered).  The TextIO and BinaryIO subclasses
    below capture the distinctions between text vs. binary, which is
    pervasive in the interface; however we currently do not offer a
    way to track the other distinctions in the type system.
    """
    __slots__ = ()
    @property
    @abstractmethod
    def mode(self) -> str:
        pass
    @property
    @abstractmethod
    def name(self) -> str:
        pass
    @abstractmethod
    def close(self) -> None:
        pass
    @property
    @abstractmethod
    def closed(self) -> bool:
        pass
    @abstractmethod
    def fileno(self) -> int:
        pass
    @abstractmethod
    def flush(self) -> None:
        pass
    @abstractmethod
    def isatty(self) -> bool:
        pass
    @abstractmethod
    def read(self, n: int = -1) -> AnyStr:
        pass
    @abstractmethod
    def readable(self) -> bool:
        pass
    @abstractmethod
    def readline(self, limit: int = -1) -> AnyStr:
        pass
    @abstractmethod