private void StopListening()
        {
            if (!_isListening)
            {
                Debug.LogError("Attempted to stop listening for updates while not listening. Did you forget to call base.Start() or base.OnEnable()?");
                return;
            }

            if (_updateable != null)
            {
                ManagedUpdate.OnUpdate.RemoveListener(this);
            }
            if (_lateUpdateable != null)
            {
                ManagedUpdate.OnLateUpdate.RemoveListener(this);
            }
            if (_fixedUpdateable != null)
            {
                ManagedUpdate.OnFixedUpdate.RemoveListener(this);
            }

            if (_customUpdateable != null && _customUpdateIds != null)
            {
                for (var i = 0; i < _customUpdateIds.Length; i++)
                {
                    ManagedUpdate.RemoveListener(_customUpdateIds[i], this);
                }
            }

            _isListening = false;
        }