public NumberInfo(string number, string bottomNumber, FUSLogger logger)
 {
     Number       = number;
     BottomNumber = bottomNumber;
     Logger       = logger;
 }
    // Use this for initializatihon
    void Start()
    {
        _moduleId = _moduleIdCounter++;
        _logger   = new FUSLogger(_moduleId);
        var possible = new List <IFUSComponentSolver>
        {
            new ForgetMeNotComponent(),
            new ForgetMeLaterComponent(),
            new ANDComponent(),
            new ForgetMeNowComponent(),
            new ForgetInfinityComponent(),
            new ForgetEverythingComponent(),
            new SimonsStagesComponent(),
            new ForgetUsNotComponent()
        };
        var methods = new List <int>();

        for (var i = 0; i < 4; i++)
        {
            var method = rnd.Range(0, 8);
            while (methods.Contains(method) || method == 1 && methods.Contains(2) || method == 2 && methods.Contains(1))
            {
                method = rnd.Range(0, 8);
            }
            methods.Add(method);
        }

        var simonStagesColor = (SimonsStagesColor)rnd.Range(0, 6);

        if ((methods.Contains(7) && methods.IndexOf(7) > 1))
        {
            var method   = rnd.Range(0, 2);
            var previous = methods.IndexOf(7);
            var first    = methods[method];
            methods[method]   = methods[previous];
            methods[previous] = first;
        }

        if (methods.Contains(6) && new[] { SimonsStagesColor.Blue, SimonsStagesColor.Lime }.Contains(simonStagesColor) && methods.IndexOf(6) > 1)
        {
            var method = rnd.Range(0, 2);
            if (methods[method] == 7)
            {
                method = method == 0 ? 1 : 0;
            }
            var previous = methods.IndexOf(6);
            var first    = methods[method];
            methods[method]   = methods[previous];
            methods[previous] = first;
        }
        for (var i = 0; i < 4; i++)
        {
            _usedMethods.Add(possible[methods[i]]);
        }

        if (_usedMethods.Select(x => x.Id).Contains(MethodId.SimonsStages))
        {
            Audio.PlaySoundAtTransform(_usedMethods.Select(x => x.Id).Contains(MethodId.AND) ? SFX[rnd.Range(0, 2) == 0 ? 0 : 7].name : SFX[0].name, Module.transform);
        }
        else
        {
            Audio.PlaySoundAtTransform(SFX[7].name, Module.transform);
        }

        _chosenColor       = simonStagesColor;
        Module.OnActivate += Activate;
    }