/// <summary>
        /// Retrieve data from preparer and process it through pipeline.
        /// </summary>
        public virtual void Execute()
        {
            var data = _dataPreparer.GetData();

            foreach (var item in data)
            {
                _pipeline.Execute(item);
            }
        }
        /// <summary>
        /// Executes the validation pipeline.
        /// </summary>
        /// <returns></returns>
        public virtual IDictionary <T, IList <TResult> > Check()
        {
            var data = _dataPreparer.GetData();

            return(data.ToDictionary(item => item, item => _pipeline.Check(item)));
        }