public LeagueLifecycleServiceImpl(TrinketSpawner trinketSpawner, LeagueBuildUtilities leagueBuildUtilities, LeagueSessionService leagueSessionService, RadsService radsService, LeagueTrinketSpawnConfigurationFactory leagueTrinketSpawnConfigurationFactory, ModificationLoader modificationLoader)
        {
            this.trinketSpawner       = trinketSpawner;
            this.leagueBuildUtilities = leagueBuildUtilities;
            this.leagueSessionService = leagueSessionService;
            this.radsService          = radsService;
            this.leagueTrinketSpawnConfigurationFactory = leagueTrinketSpawnConfigurationFactory;
            this.modificationLoader = modificationLoader;

            phaseChangeHandlers = ImmutableDictionary.Of <PhaseChange, PhaseChangeHandler>(
                new PhaseChange(LeagueSessionPhase.Uninitialized, LeagueSessionPhase.Preclient), HandleUninitializedToPreclientPhaseTransition,
                new PhaseChange(LeagueSessionPhase.Preclient, LeagueSessionPhase.Client), HandlePreclientToClientPhaseTransition,
                new PhaseChange(LeagueSessionPhase.Client, LeagueSessionPhase.Game), HandleClientToGamePhaseTransition
                );
            processLaunchedHandlers = ImmutableDictionary.Of <LeagueProcessType, LeagueSessionProcessLaunchedHandler>(
                LeagueProcessType.RadsUserKernel, (s, e) => HandlePreclientProcessLaunched(e.Process),
                LeagueProcessType.Launcher, (s, e) => HandlePreclientProcessLaunched(e.Process),
                LeagueProcessType.Patcher, (s, e) => HandlePreclientProcessLaunched(e.Process)
                );
        }
        public LeagueLifecycleServiceImpl(TrinketSpawner trinketSpawner, LeagueBuildUtilities leagueBuildUtilities, LeagueSessionService leagueSessionService, RadsService radsService, LeagueTrinketSpawnConfigurationFactory leagueTrinketSpawnConfigurationFactory, ModificationLoader modificationLoader)
        {
            this.trinketSpawner = trinketSpawner;
             this.leagueBuildUtilities = leagueBuildUtilities;
             this.leagueSessionService = leagueSessionService;
             this.radsService = radsService;
             this.leagueTrinketSpawnConfigurationFactory = leagueTrinketSpawnConfigurationFactory;
             this.modificationLoader = modificationLoader;

             phaseChangeHandlers = ImmutableDictionary.Of<PhaseChange, PhaseChangeHandler>(
            new PhaseChange(LeagueSessionPhase.Uninitialized, LeagueSessionPhase.Preclient), HandleUninitializedToPreclientPhaseTransition,
            new PhaseChange(LeagueSessionPhase.Preclient, LeagueSessionPhase.Client), HandlePreclientToClientPhaseTransition,
            new PhaseChange(LeagueSessionPhase.Client, LeagueSessionPhase.Game), HandleClientToGamePhaseTransition
             );
             processLaunchedHandlers = ImmutableDictionary.Of<LeagueProcessType, LeagueSessionProcessLaunchedHandler>(
            LeagueProcessType.RadsUserKernel, (s, e) => HandlePreclientProcessLaunched(e.Process),
            LeagueProcessType.Launcher, (s, e) => HandlePreclientProcessLaunched(e.Process),
            LeagueProcessType.Patcher, (s, e) => HandlePreclientProcessLaunched(e.Process)
             );
        }