/// <summary>
        /// Initializes a new instance of the <see cref="ConstantRange"/> class.
        /// </summary>
        /// <param name="minimum">The minimum value in the range.</param>
        /// <param name="maximum">The maximum value in the range.</param>
        public ConstantRange(IOrderedLanguageConstant minimum, IOrderedLanguageConstant maximum)
        {
            Minimum = minimum;
            Maximum = maximum;

#if COVERAGE
            Debug.Assert(Minimum == minimum);
            Debug.Assert(Maximum == maximum);
#endif
        }
        /// <summary>
        /// Tries to parse an expression as a constant number.
        /// </summary>
        /// <param name="expression">The expression to parse.</param>
        /// <param name="expressionConstant">The parsed constant upon return if successful.</param>
        /// <param name="error">Error found on failure.</param>
        /// <returns>True if the expression could be parsed as a constant; Otherwise, false.</returns>
        public static bool TryParseExpression(IExpression expression, out IOrderedLanguageConstant expressionConstant, out IError error)
        {
            expressionConstant = null;
            error = null;
            bool Result = false;

            if (expression.ExpressionConstant.IsAssigned && expression.ExpressionConstant.Item is IOrderedLanguageConstant AsOrderedLanguageConstant)
            {
                expressionConstant = AsOrderedLanguageConstant;
                Result             = true;
            }
            else
            {
                error = new ErrorNumberConstantExpected(expression);
            }

            return(Result);
        }
 /// <summary>
 /// Checks if this instance is greater than another constant.
 /// </summary>
 /// <param name="other">The other instance.</param>
 public virtual bool IsConstantGreater(IOrderedLanguageConstant other)
 {
     return(IsConstantGreater(other as INumberLanguageConstant));
 }