public override IEnumerable<Result> Execute(Release release)
        {
            var helper = new StageHelper();
            var res = new List<Result>();
            var units = release.GetAnalysisUnits();
            var readsAndWrites = units.Where(i => i.Stage.Type == "Read" || i.Stage.Type == "Write").ToList();
            foreach (var u in readsAndWrites)
            {

                if (HasExclusion(u.Stage)) continue;
                var stages = helper.FilterStagesByPage(u, units);
                if (!helper.HasAnImediatePreviousWait(u.Stage, units.Where(i => i.PageId == u.PageId).Select(i => i.Stage)))
                    res.Add(FromStageAnalysis(u, ResultType.Error,
                        string.Format("{0} stage {1} is not preceeded by a proper wait stage", u.Stage.Type, u.Stage.Name), ""));
            }
            return res;
        }
        public override IEnumerable <Result> Execute(Release release)
        {
            var helper         = new StageHelper();
            var res            = new List <Result>();
            var units          = release.GetAnalysisUnits();
            var navigateStages = FilterStagesToAnalize(release.GetAnalysisUnits());

            foreach (var u in navigateStages)
            {
                var stages = helper.FilterStagesByPage(u, units);
                if (!helper.HasAnImediatePreviousWait(u.Stage, units.Where(i => i.PageId == u.PageId).Select(i => i.Stage)))
                {
                    res.Add(FromStageAnalysis(u, ResultType.Error,
                                              string.Format("{0} stage {1} is not preceeded by a proper wait stage", u.Stage.Type, u.Stage.Name), ""));
                }
            }
            return(res);
        }