/// <inheritdoc/>
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }
            ProbabilisticSelector <T> cmpObj = obj as ProbabilisticSelector <T>;

            if (_origElements.Count != cmpObj._origElements.Count)
            {
                return(false);
            }
            for (int i = 0; i < _origElements.Count; i++)
            {
                if (_origElements[i].Item1 != cmpObj._origElements[i].Item1 ||
                    !Equals(_origElements[i].Item2, cmpObj._origElements[i].Item2)
                    )
                {
                    return(false);
                }
            }
            return(true);
        }
        /// <summary>
        /// Creates the deep copy instance of this instance.
        /// </summary>
        public ProbabilisticSelector <T> DeepClone()
        {
            ProbabilisticSelector <T> clone = new ProbabilisticSelector <T>(this._origElements);

            return(clone);
        }