/// <summary> Formats the specified arguments using this string as a template.
		/// Caches the parsing results for increased performance.
		/// </summary>
		/// <param name="format">The template that defines how the arguments are formatted</param>
		/// <param name="args">A list of arguments to be used in formatting</param>
		/// <param name="cache">Outputs an object that increases performance if the same format string is used repeatedly.</param>
		public static string FormatSmart(this string format, ref FormatCache cache, params object[] args)
		{
			// With cache:
			return Smart.Default.FormatWithCache(ref cache, format, args);
		}
		public FormatDetails(SmartFormatter formatter, Format originalFormat, object[] originalArgs, FormatCache formatCache, IFormatProvider provider, IOutput output)
		{
			Formatter = formatter;
			OriginalFormat = originalFormat;
			OriginalArgs = originalArgs;
			FormatCache = formatCache;
			Provider = provider;
			Output = output;
		}