public CollectionChangedWeakEventListener(INotifyCollectionChanged source, NotifyCollectionChangedEventHandler handler)
 {
     _bag = new AnonymousCollectionChangedEventHandlerBag(source, handler);
     Initialize(
         h => new NotifyCollectionChangedEventHandler(h),
         h => source.CollectionChanged += h,
         h => source.CollectionChanged -= h,
         (sender, e) => _bag.ExecuteHandler(e));
 }
        /// <summary>
        ///     コンストラクタ
        /// </summary>
        /// <param name="source">INotifyCollectionChangedオブジェクト</param>
        public CollectionChangedWeakEventListener([NotNull] INotifyCollectionChanged source)
        {
            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }

            _bag = new AnonymousCollectionChangedEventHandlerBag(source);
            Initialize(
                h => new NotifyCollectionChangedEventHandler(h ?? throw new ArgumentNullException(nameof(h))),
                h => source.CollectionChanged += h,
                h => source.CollectionChanged -= h,
                (sender, e) => _bag.ExecuteHandler(e ?? throw new ArgumentNullException(nameof(e))));
        }