private void StartRun(IDictionary <Assembly, IEnumerable <Context> > contextMap)
        {
            if (!explicitStartAndEnd)
            {
                runStart.Invoke();
            }

            foreach (var(assembly, contexts) in contextMap)
            {
                assemblyRunner.Run(assembly, contexts);
            }

            if (!explicitStartAndEnd)
            {
                runEnd.Invoke();
            }
        }
        void StartRun(IDictionary <Assembly, IEnumerable <Context> > contextMap)
        {
            if (!_explicitStartAndEnd)
            {
                _runStart.Invoke();
            }

            foreach (var pair in contextMap)
            {
                var assembly = pair.Key;
                // TODO: move this filtering to a more sensible place
                var contexts = pair.Value.FilteredBy(_options);

                _assemblyRunner.Run(assembly, contexts);
            }

            if (!_explicitStartAndEnd)
            {
                _runEnd.Invoke();
            }
        }