/// <summary>
        /// Call this to enable a submodule of this module.
        /// </summary>
        /// <param name="submod">Submod.</param>
        public virtual void EnableSubmodule(Submodule submod)
        {
            if (!SelfSubmodules.Contains(submod))
            {
                Debug.LogFormat("Submodule {0} doesn't belong to module {1}.", submod.ToString(), SelfModule.ToString());
                return;
            }

            InternalEnableSubmodule(submod);
        }
 /// <summary>
 /// Do not call this for composite module, use <see cref="DisableSubmodule"/> instead.
 /// </summary>
 public new void DisableModule()
 {
     // Composite module is not disabled wholly but by individual features.
     Debug.Log("Composite module " + SelfModule.ToString() + " cannot be disabled wholly but by individual features.");
     throw new System.NotSupportedException();
 }