public OneWayListBinding(IObservableListBinding <T> target,
                                 IReadOnlyObservableValue <IReadOnlyList <T> > sourceValue)
        {
            this.target      = target ?? throw new ArgumentNullException(nameof(target));
            this.sourceValue = sourceValue ?? throw new ArgumentNullException(nameof(sourceValue));
            this.sourceValue.PropertyChanged += OnSourceValueChanged;

            target.Clear();
            target.AddRange(sourceValue.Value);
        }
 void OnSourceValueChanged(object sender, PropertyChangedEventArgs e)
 {
     if (!alreadyHandlingEvent)
     {
         try
         {
             alreadyHandlingEvent = true;
             if (IndexerName.Equals(e.PropertyName, StringComparison.Ordinal))
             {
                 TargetAsList.Clear();
                 target.AddRange(sourceValue.Value);
             }
         }
         finally
         {
             alreadyHandlingEvent = false;
         }
     }
 }