/// <summary>
        ///     Processes the message.
        /// </summary>
        /// <param name="children">Children.</param>
        /// <param name="parent">Parent.</param>
        /// <param name="message">Message.</param>
        public static void ProcessMessage(List <HydraMonoBehaviourChild> children, HydraMonoBehaviour parent, Message message)
        {
            for (int index = 0; index < children.Count; index++)
            {
                HydraMonoBehaviourChild child = children[index];

                if (child == null)
                {
                    continue;
                }

                switch (message)
                {
                case Message.OnUpdate:
                    child.Update(parent);
                    break;

                case Message.OnDestroy:
                    child.Destroy(parent);
                    break;

                case Message.OnDisable:
                    child.Disable(parent);
                    break;

                case Message.OnEnable:
                    child.Enable(parent);
                    break;

                case Message.OnReset:
                    child.Reset(parent);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
        }
 /// <summary>
 ///     Processes the message.
 /// </summary>
 /// <param name="message">Message.</param>
 private void ProcessMessage(HydraMonoBehaviourChild.Message message)
 {
     HydraMonoBehaviourChild.ProcessMessage(GetMonoBehaviourChildren(), this, message);
 }