/// <summary>
        /// Scans the all execution groups to look for a component by instance id.
        /// </summary>
        /// <param name="instanceId"></param>
        /// <param name="updateFound"></param>
        /// <param name="fixedUpdateFound"></param>
        public void FindComponent(int instanceId, out bool updateFound, out bool fixedUpdateFound)
        {
            bool didFindUpdate      = false;
            bool didFindFixedUpdate = false;

            void CheckUpdate(ManagedUpdatesBehaviour component)
            {
                didFindUpdate |= (instanceId == component.GetInstanceID());
            }

            void CheckFixedUpdate(ManagedUpdatesBehaviour component)
            {
                didFindFixedUpdate |= (instanceId == component.GetInstanceID());
            }

            // As part of the loop condition, bail out if we've already found all update types.
            for (int i = 0; i < _executionGroups.Count && !(didFindUpdate && didFindFixedUpdate); i++)
            {
                ManagedExecutionGroup group = _executionGroups[i];
                group.TraverseForType(UpdateType.Normal, CheckUpdate);
                group.TraverseForType(UpdateType.Fixed, CheckFixedUpdate);
            }

            updateFound      = didFindUpdate;
            fixedUpdateFound = didFindFixedUpdate;
        }
            public Config(ManagedExecutionGroup executionGroup, bool update, bool fixedUpdate)
            {
                this._executionGroup = executionGroup;

                this._update      = update;
                this._fixedUpdate = fixedUpdate;

                this.valueChangedAction = null;
            }