/// <summary>
        /// <para>Initializes a new instance of the <see cref="PathLogInfo" /> class.</para>
        /// </summary>
        /// <param name="namespaceRelative">Path relative to the namespace containing the
        /// content.</param>
        /// <param name="contextual">Fully qualified path relative to event's context. Might be
        /// missing due to historical data gap.</param>
        public PathLogInfo(NamespaceRelativePathLogInfo namespaceRelative,
                           string contextual = null)
        {
            if (namespaceRelative == null)
            {
                throw new sys.ArgumentNullException("namespaceRelative");
            }

            this.NamespaceRelative = namespaceRelative;
            this.Contextual        = contextual;
        }
        /// <summary>
        /// <para>Initializes a new instance of the <see cref="PathLogInfo" /> class.</para>
        /// </summary>
        /// <param name="namespaceRelative">Path relative to the namespace containing the
        /// content.</param>
        /// <param name="contextual">Fully qualified path relative to event's context. Might be
        /// missing due to historical data gap.</param>
        public PathLogInfo(NamespaceRelativePathLogInfo namespaceRelative,
                           string contextual = null)
        {
            if (namespaceRelative == null)
            {
                throw new sys.ArgumentNullException("namespaceRelative");
            }

            if (contextual != null)
            {
                if (!re.Regex.IsMatch(contextual, @"\A(?:/(.|[\r\n])*)\z"))
                {
                    throw new sys.ArgumentOutOfRangeException("contextual", @"Value should match pattern '\A(?:/(.|[\r\n])*)\z'");
                }
            }

            this.NamespaceRelative = namespaceRelative;
            this.Contextual        = contextual;
        }