/// <summary>
        /// Constructor
        /// </summary>
        /// <param name="bossPlacement">
        /// The boss section to be represented.
        /// </param>
        public BossSectionIconVM(IBossPlacement bossPlacement)
        {
            _bossPlacement = bossPlacement ?? throw new ArgumentNullException(nameof(bossPlacement));
            BossSelect     = BossSelectVMFactory.GetBossSelectPopupVM(bossPlacement);

            Mode.Instance.PropertyChanged  += OnModeChanged;
            _bossPlacement.PropertyChanged += OnBossChanged;
        }
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="bossPlacement">
        /// The boss section to which the boss belongs.
        /// </param>
        public BossSmallItemVM(IBossPlacement bossPlacement)
        {
            _bossPlacement = bossPlacement ?? throw new ArgumentNullException(nameof(bossPlacement));
            _requirement   = RequirementDictionary.Instance[RequirementType.BossShuffleOn];
            BossSelect     = BossSelectVMFactory.GetBossSelectPopupVM(_bossPlacement);

            _bossPlacement.PropertyChanged += OnBossChanged;
            _requirement.PropertyChanged   += OnRequirementChanged;
        }