public override void InstallBindings()
        {
            var config = Container.Resolve <PluginConfig>();

            if (!config.Enabled || Container.Resolve <SaberSet>().IsEmpty)
            {
                return;
            }

            if (Container.HasBinding <GameplayCoreSceneSetupData>())
            {
                var sceneSetupData = Container.Resolve <GameplayCoreSceneSetupData>();
                var beatmapData    = sceneSetupData.difficultyBeatmap.beatmapData;
                Container.Bind <BeatmapData>().WithId("beatmapdata").FromInstance(beatmapData);
                var lastNoteTime = beatmapData.GetLastNoteTime();
                Container.Bind <float>().WithId("LastNoteId").FromInstance(lastNoteTime);
                Container.BindInterfacesAndSelfTo <EventPlayer>().AsTransient();
            }

            //Container.BindInterfacesAndSelfTo<AFHandler>().AsSingle();
            Container.BindInterfacesAndSelfTo <GameSaberSetup>().AsSingle();
            Container.BindInstance(SaberModelRegistration.Create <SfSaberModelController>(300)).AsSingle();

#if DEBUG && TEST_TRAIL
            if (Container.TryResolve <LaunchOptions>()?.FPFC ?? false)
            {
                var testerInitData = new SaberMovementTester.InitData {
                    CreateTestingSaber = true
                };
                Container.BindInterfacesAndSelfTo <SaberMovementTester>().AsSingle().WithArguments(testerInitData);
            }
#endif
        }
        public override void InstallBindings()
        {
            var config = Container.Resolve <PluginConfig>();

            if (!config.Enabled || Container.Resolve <SaberSet>().IsEmpty)
            {
                return;
            }

            Container.BindInterfacesAndSelfTo <EventPlayer>().AsTransient();

            //Container.BindInterfacesAndSelfTo<AFHandler>().AsSingle();

            if (!Container.HasBinding <ObstacleSaberSparkleEffectManager>())
            {
                Container.Bind <ObstacleSaberSparkleEffectManager>().FromMethod(ObstanceSaberSparkleEffectManagerGetter).AsSingle();
            }

            Container.BindInterfacesAndSelfTo <GameSaberSetup>().AsSingle();
            Container.BindInstance(SaberModelRegistration.Create <SfSaberModelController>(300));

#if DEBUG && TEST_TRAIL
            if (Container.TryResolve <LaunchOptions>()?.FPFC ?? false)
            {
                var testerInitData = new SaberMovementTester.InitData {
                    CreateTestingSaber = true
                };
                Container.BindInterfacesAndSelfTo <SaberMovementTester>().AsSingle().WithArguments(testerInitData);
            }
#endif
        }