public static IConnected <TResult> Select <TSource, TResult>(this IConnected <TSource> source,
                                                              Func <TSource, TResult> selector)
 {
     return(source.IsConnected ?
            new Connected <TResult>(selector(source.Value)) :
            new Connected <TResult>());
 }
    private void Start()
    {
        iConnected           = UIManager.Instance.IConnected;
        interactivityMonitor = GetComponent <InteractivityMonitor>();

        iConnected?.RegisterToConnectionChanges(OnConnectionChange);
        interactivityMonitor?.InteractivityChangedEvent.AddListener(OnInteractivityChange);
    }