/// <summary>
        ///   Disposes the object, releasing all managed and unmanaged resources.
        /// </summary>
        /// <param name="disposing">If true, indicates that the object is disposed; otherwise, the object is finalized.</param>
        protected override void OnDisposing(bool disposing)
        {
            if (!disposing)
            {
                return;
            }

            _chosenValues.SafeDispose();
            _valueCount.SafeDispose();
        }