def cached_slot_property(name: str) -> Callable[([Callable[([T], T_co)]], CachedSlotProperty[(T, T_co)])]:

    def decorator(func: Callable[([T], T_co)]) -> CachedSlotProperty[(T, T_co)]:
        return CachedSlotProperty(name, func)
    return decorator
def cached_slot_property(name: str) -> Callable[([Callable[([T], T_co)]], CachedSlotProperty[(T, T_co)])]:

    def decorator(func: Callable[([T], T_co)]) -> CachedSlotProperty[(T, T_co)]:
        return CachedSlotProperty(name, func)
    return decorator