/// <summary> /// Reduces this node to a simpler expression. If CanReduce returns /// true, this should return a valid expression. This method is /// allowed to return another node which itself must be reduced. /// </summary> /// <returns>The reduced expression.</returns> public virtual Expression Reduce() { if (CanReduce) { throw Error.ReducibleMustOverrideReduce(); } return(this); }