private void StartListening()
        {
            if (_isListening)
            {
                Debug.LogError("Attempt at starting to listen for updates, while already listening. Did you forget to call base.OnDisable()?");
                return;
            }

            var executionOrder = ExecutionOrder;

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

            if (_customUpdateable != null)
            {
                if (_customUpdateIds == null)
                {
                    _customUpdateIds = _customUpdateable.GetCustomUpdateIds() ?? new int[0];
                }

                for (var i = 0; i < _customUpdateIds.Length; i++)
                {
                    ManagedUpdate.AddListener(_customUpdateIds[i], this, executionOrder);
                }
            }

            _isListening = true;
        }