IGgpDebugEngine CreateGgpDebugEngine(
            IDebugSessionLauncherFactory debugSessionLauncherFactory = null,
            IRemoteDeploy remoteDeploy = null)
        {
            DebugEngineFactoryCompRootStub compRoot = CreateEngineFactoryCompRoot(
                debugSessionLauncherFactory, remoteDeploy ?? Substitute.For <IRemoteDeploy>());
            IDebugEngineFactory factory = compRoot.CreateDebugEngineFactory();

            return(factory.Create(null));
        }
        DebugEngineFactoryCompRootStub CreateEngineFactoryCompRoot(
            IDebugSessionLauncherFactory debugSessionLauncherFactory, IRemoteDeploy remoteDeploy)
        {
            var compRoot = new DebugEngineFactoryCompRootStub(
                debugSessionLauncherFactory, remoteDeploy, Substitute.For <IGameLauncher>());

            _metrics = Substitute.For <IMetrics>();
            _metrics.NewDebugSessionId().Returns(_debugSessionId);
            ISessionNotifier sessionNotifier = Substitute.For <ISessionNotifier>();
            SLLDBShell       lldbShell       = TestDummyGenerator.Create <SLLDBShell>();
            var vsiService            = new YetiVSIService(OptionPageGrid.CreateForTesting());
            var vsOutputWindow        = new OutputWindowStub();
            var symbolSettingsManager = Substitute.For <IVsDebuggerSymbolSettingsManager120A>();

            compRoot.ServiceManager =
                new ServiceManagerStub(_metrics, lldbShell, vsiService, vsOutputWindow,
                                       symbolSettingsManager, sessionNotifier);
            return(compRoot);
        }