/// <summary>
        ///     Implements <see cref="ICommand.Execute" />
        /// </summary>
        public void Execute(object parameter)
        {
            _mainWindowViewModel.ExtractedData.Clear();
            _mainWindowViewModel.ExtractedDataShadow.Clear();

            var span = new TimeSpan();

            _mainWindowViewModel.Information = string.Format("Extracting");

            var nodes = new List <INode>();

            if (_mainWindowViewModel.ExtractTests)
            {
                var result = _extractor.ExtractTimed <IStubNode>(_mainWindowViewModel.Files);
                span = result.Item2;
                nodes.AddRange(result.Item1);
            }
            if (_mainWindowViewModel.ExtractSuits)
            {
                var result = _extractor.ExtractTimed <ISuiteNode>(_mainWindowViewModel.Files);
                span = result.Item2;
                nodes.AddRange(result.Item1);
            }

            _mainWindowViewModel.Information = string.Format("Extraction took {0} ms", span.Milliseconds);
            if (!nodes.Any())
            {
                return;
            }

            foreach (var node in nodes)
            {
                _mainWindowViewModel.ExtractedData.Add(node);
            }
            _mainWindowViewModel.ExtractedDataShadow.AddRange(nodes);

            _mainWindowViewModel.PopulateCategoryFiltersCommand.Execute(null);
            _mainWindowViewModel.FilterCommand.Execute(null);
        }