public bool IsFlickedOn()
            {
                if (FlickComp == null)
                {
                    return(false);
                }

                if (InstantFlickActive)
                {
                    return(FlickComp.SwitchIsOn);
                }
                else
                {
                    return((bool)WantsToBeOnInfo.GetValue(FlickComp));
                }
            }
            public void Flick()
            {
                if (FlickComp == null)
                {
                    return;
                }

                bool currentWantsToBeOn = (bool)WantsToBeOnInfo.GetValue(FlickComp);

                WantsToBeOnInfo.SetValue(FlickComp, !currentWantsToBeOn);

                if (InstantFlickActive)
                {
                    FlickComp.DoFlick();
                }
                else
                {
                    FlickUtility.UpdateFlickDesignation(Thing);
                }
            }
            public void FlickAll(bool startingState)
            {
                foreach (var thing in Things)
                {
                    var fc = thing.FlickComp;
                    if (fc == null)
                    {
                        continue;
                    }

                    bool currentState = InstantFlickActive ? fc.SwitchIsOn : (bool)WantsToBeOnInfo.GetValue(fc);

                    if (startingState && currentState)
                    {
                        thing.Flick();
                    }
                    else if (!startingState && !currentState)
                    {
                        thing.Flick();
                    }
                }
            }