public static BehaviorsDisposable <IEnumerable <T> > AddBehavior <T>
        (
            this BehaviorsDisposable <IEnumerable <T> > previousBehaviors,
            Action <T> onAdd,
            Action <T> onRemove = null
        )
        {
            IEnumerable <T> collection = previousBehaviors?.TheObjectTheBehaviorsAreAttachedTo;

            return(collection.AddBehaviorImpl <T>(onAdd, onRemove, previousBehaviors));
        }
        private static BehaviorsDisposable <IEnumerable <T> > AddBehaviorImpl <T>
        (
            this IEnumerable <T> collection,
            Action <T> onAdd,
            Action <T> onRemove = null,
            BehaviorsDisposable <IEnumerable <T> > previousBehavior = null
        )
        {
            DoForEachItemCollectionBehavior <T> behavior = new DoForEachItemCollectionBehavior <T>(onAdd, onRemove);

            return(collection?.AddBehaviorImpl <T>(behavior, previousBehavior));
        }
        public BehaviorsDisposable
        (
            DisposableBehaviorContainer <T> disposableBehaviorToAdd,
            BehaviorsDisposable <T> previousBehavior = null
        )
        {
            if (previousBehavior != null)
            {
                previousBehavior
                ._disposableBehaviors
                ?.ForEach((dispBehavior) => _disposableBehaviors.Add(dispBehavior));
            }

            _disposableBehaviors.Add(disposableBehaviorToAdd);
        }
        private static BehaviorsDisposable <IEnumerable <T> > AddBehaviorImpl <T>
        (
            this IEnumerable <T> collection,
            DoForEachItemCollectionBehavior <T> behavior,
            BehaviorsDisposable <IEnumerable <T> > previousBehavior = null
        )
        {
            if (collection == null)
            {
                return(null);
            }

            DisposableBehaviorContainer <IEnumerable <T> > behaviorContainer =
                new DisposableBehaviorContainer <IEnumerable <T> >(behavior, collection);

            BehaviorsDisposable <IEnumerable <T> > behaviorsDisposable =
                new BehaviorsDisposable <IEnumerable <T> >(behaviorContainer, previousBehavior);

            return(behaviorsDisposable);
        }