private EncodingUrlSegment(string segment, EncodingUrlParameterCollection parameters)
 {
     Segment    = segment;
     Parameters = parameters ?? new EncodingUrlParameterCollection();
 }
 /// <summary>
 /// Creates a URL segment with a version string.
 /// </summary>
 /// <param name="segment">Do not pass null.</param>
 /// <param name="versionString">Do not pass null or the empty string. Must contain only alphanumeric characters.</param>
 /// <param name="parameters"></param>
 public static EncodingUrlSegment CreateWithVersionString(string segment, string versionString, EncodingUrlParameterCollection parameters = null) =>
 versionString.Length > 0 && versionString == versionString.RemoveNonAlphanumericCharacters()
                         ? new EncodingUrlSegment("{0}--v{1}".FormatWith(segment, versionString), parameters)
                         : throw new ArgumentOutOfRangeException(nameof(versionString));
 /// <summary>
 /// Creates a URL segment from a positive int.
 /// </summary>
 /// <param name="value"></param>
 /// <param name="parameters"></param>
 public static EncodingUrlSegment CreatePositiveInt(int value, EncodingUrlParameterCollection parameters = null) =>
 value >= 1
                         ? new EncodingUrlSegment(value.ToString("D", CultureInfo.InvariantCulture), parameters)
                         : throw new ArgumentOutOfRangeException(nameof(value));
 /// <summary>
 /// Creates a URL segment.
 /// </summary>
 /// <param name="segment">Do not pass null.</param>
 /// <param name="parameters"></param>
 public static EncodingUrlSegment Create(string segment, EncodingUrlParameterCollection parameters = null) =>
 new EncodingUrlSegment(segment, parameters);