/// <summary>
        /// Set up this switch to send its status to the gamelogic engine with the given ID.
        /// </summary>
        /// <param name="switchConfig">Config containing gamelogic engine's switch ID and pulse settings</param>
        /// <param name="switchStatus">Since multiple switch destinations can map to a switch, we might already have a status object.</param>
        internal IApiSwitchStatus AddSwitchDest(SwitchConfig switchConfig, IApiSwitchStatus switchStatus)
        {
            if (_switches == null)
            {
                _switches = new List <SwitchConfig>();
            }

            var swStatus = switchStatus ?? new ItemSwitchStatus(switchConfig.IsNormallyClosed)
            {
                IsSwitchEnabled = IsEnabled
            };

            _switches.Add(switchConfig);
            _switchStatuses[switchConfig.SwitchId] = swStatus;

            return(swStatus);
        }
 IApiSwitchStatus IApiSwitch.AddSwitchDest(SwitchConfig switchConfig, IApiSwitchStatus switchStatus) => AddSwitchDest(switchConfig.WithPulse(true), switchStatus);
 IApiSwitchStatus IApiSwitch.AddSwitchDest(SwitchConfig switchConfig, IApiSwitchStatus switchStatus) => AddSwitchDest(switchConfig, switchStatus);
 private protected IApiSwitchStatus AddSwitchDest(SwitchConfig switchConfig, IApiSwitchStatus switchStatus) => SwitchHandler.AddSwitchDest(switchConfig, switchStatus);
 IApiSwitchStatus IApiSwitch.AddSwitchDest(SwitchConfig switchConfig, IApiSwitchStatus switchStatus) =>
 _switchHandler.AddSwitchDest(switchConfig.WithPulse(_isPulseSwitch).WithDefault(_switchDefault), switchStatus);