public DebugEngineCommands(JoinableTaskContext taskContext,
                            NatvisExpander natvisExpander, bool allowNatvisReload)
 {
     _taskContext       = taskContext;
     _natvisExpander    = natvisExpander;
     _allowNatvisReload = allowNatvisReload;
 }
        public virtual NatvisExpander GetNatvis()
        {
            if (_natvisExpander == null)
            {
                var natvisSizeParser = new NatvisSizeParser(GetNatvisDiagnosticLogger(),
                                                            GetNatvisExpressionEvaluator());

                var natvisStringFormatter = new NatvisStringFormatter(
                    GetNatvisExpressionEvaluator(), GetNatvisDiagnosticLogger(),
                    GetNatvisVisualizerScanner(), GetTaskExecutor());

                var natvisCollectionFactory = CreateNatvisCollectionFactory(
                    GetNatvisExpressionEvaluator(), natvisSizeParser, natvisStringFormatter);

                var natvisSmartPointerFactory = new SmartPointerEntity.Factory(
                    GetNatvisDiagnosticLogger(), GetNatvisExpressionEvaluator());

                _natvisExpander =
                    new NatvisExpander(natvisCollectionFactory, natvisSmartPointerFactory,
                                       natvisStringFormatter, GetNatvisVisualizerScanner());
            }

            return(_natvisExpander);
        }