private ObservableItemContainer <Tuple <TOuter, TInner>, TResult> Merge(
            TOuter outerItem, TInner innerItem)
        {
            var tuple      = Tuple.Create(outerItem, innerItem);
            var observable = _resultSelector(tuple.Item1, tuple.Item2);
            var container  = new ObservableItemContainer <Tuple <TOuter, TInner>, TResult>(tuple, observable);

            container.ValueChanged += MergedContainerOnValueChanged;
            return(container);
        }
 private void DestroyContainer(ObservableItemContainer <Tuple <TOuter, TInner>, TResult> item)
 {
     item.ValueChanged -= MergedContainerOnValueChanged;
     item.Dispose();
 }