#pragma warning restore CS1591 // Missing XML comment for publicly visible type or member
        #endregion

        /// <summary>
        /// Checks that all destinations values have been set.
        /// </summary>
        /// <param name="source">The node instance to check.</param>
        public virtual bool AreAllDestinationsSet(TSource source)
        {
            bool IsSet = true;

            foreach (IDestinationTemplate DestinationTemplate in DestinationTemplateList)
            {
                IsSet &= DestinationTemplate.IsSet(source);
            }

            return(IsSet);
        }
#pragma warning restore CS1591 // Missing XML comment for publicly visible type or member

        /// <summary>
        /// Gets all destinations that are not set.
        /// </summary>
        /// <param name="source">The node instance to check.</param>
        public virtual IList <IDestinationTemplate> GetAllDestinationTemplatesNotSet(TSource source)
        {
            IList <IDestinationTemplate> Result = new List <IDestinationTemplate>();

            foreach (IDestinationTemplate DestinationTemplate in DestinationTemplateList)
            {
                if (!DestinationTemplate.IsSet(source))
                {
                    Result.Add(DestinationTemplate);
                }
            }

            return(Result);
        }
        /// <summary>
        /// Clears the rule template state.
        /// </summary>
        public void Clear()
        {
            ErrorList.ClearErrors();

#if COVERAGE
            foreach (ISourceTemplate SourceTemplate in SourceTemplateList)
            {
                Debug.Assert(SourceTemplate.ToString() != null);
            }
            foreach (IDestinationTemplate DestinationTemplate in DestinationTemplateList)
            {
                Debug.Assert(DestinationTemplate.ToString() != null);
            }
#endif
        }