/// <inheritdoc />
 public bool Equals(MorestachioOperatorExpression other)
 {
     return(Location.Equals(other.Location) &&
            Operator.OperatorText.Equals(other.Operator.OperatorText) &&
            LeftExpression.Equals(other.LeftExpression) &&
            (RightExpression == other.RightExpression || RightExpression.Equals(other.RightExpression)));
 }
        internal static IMorestachioExpression ParseExpressionFromKind(this XmlReader reader)
        {
            IMorestachioExpression exp = null;

            switch (reader.Name)
            {
            case "Expression":
                exp = new MorestachioExpression();
                break;

            case "ExpressionMultiPart":
                exp = new MorestachioMultiPartExpressionList();
                break;

            case "ExpressionArgList":
                exp = new MorestachioArgumentExpressionList();
                break;

            case "ExpressionString":
                exp = new MorestachioExpressionString();
                break;

            case "ExpressionNumber":
                exp = new MorestachioExpressionNumber();
                break;

            case "ExpressionOperator":
                exp = new MorestachioOperatorExpression();
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(ExpressionKindNodeName));
            }
            exp.ReadXml(reader);
            return(exp);
        }
 public ExpressionDebuggerDisplay(MorestachioOperatorExpression exp)
 {
     _exp = exp;
 }