/// <summary>
        /// Returns the value indicating whether this layout includes any volatile
        /// layout renderers.
        /// </summary>
        /// <returns>
        ///     <see langword="true"/> when the layout includes at least
        /// one volatile renderer, <see langword="false"/> otherwise.
        /// </returns>
        /// <remarks>
        /// Volatile layout renderers are dependent on information not contained
        /// in <see cref="LogEventInfo"/> (such as thread-specific data, MDC data, NDC data).
        /// </remarks>
        public bool IsVolatile()
        {
            if (Layout.IsVolatile())
            {
                return(true);
            }

            if (Header != null && Header.IsVolatile())
            {
                return(true);
            }

            if (Footer != null && Footer.IsVolatile())
            {
                return(true);
            }

            return(false);
        }