public bool Equals(IFormattedMessage other)
 {
     return Value.Equals(other.Value);
 }
		public InvalidDateRangeException(IFormattedMessage message)
			: base(message)
		{
		}
		public LocalizedNotImplementedException(IFormattedMessage formattedMessage)
			: base(formattedMessage.Value)
		{
			FormattedMessage = formattedMessage;
		}
		public LocalizedNotSupportedException(IFormattedMessage formattedMessage) : base(formattedMessage.Value)
		{
			FormattedMessage = formattedMessage;
		}
		public ParseException(IFormattedMessage message, int position)
			: base(message.Value)
		{
			Position = position;
			FormattedMessage = message;
		}
		protected Exception ParseError(int pos, IFormattedMessage message)
		{
			return new ParseException(message, pos);
		}
		protected Exception ParseError(IFormattedMessage message)
		{
			return ParseError(_token.Position, message);
		}
		protected void ValidateToken(TokenId t, IFormattedMessage errorMessage)
		{
			if (_token.ID != t) throw ParseError(errorMessage);
		}
		public LocalizedInvalidOperationException(IFormattedMessage formattedMessage)
			: base(formattedMessage.Value)
		{
			FormattedMessage = formattedMessage;
		}
		public static IFormattedMessage Combine(this IFormattedMessage part1, IFormattedMessage part2)
		{
			var parts = new { part1, part2 };
			return CombineToken.Localize(parts);
		}