/// <summary>
        /// Combines this version with the specified key value tuple and specified version tuple.
        /// </summary>
        /// <param name="key">The key to combine.</param>
        /// <param name="versionInfo">The version info to combine.</param>
        /// <returns>Combined version info.</returns>
        internal VersionInfo Combine(Key key, VersionInfo versionInfo)
        {
            ArgumentValidator.EnsureArgumentNotNull(key, "key");

            Tuple resultVersion = Value;

            if (resultVersion == null)
            {
                resultVersion = key.Value;
            }
            else
            {
                resultVersion = resultVersion.Combine(key.Value);
            }
            if (!versionInfo.IsVoid)
            {
                resultVersion = resultVersion.Combine(versionInfo.Value);
            }

            return(new VersionInfo(resultVersion.ToRegular()));
        }