internal virtual object GetConstantValue() {
var folded = ConstantFold();
if (folded != null && folded.IsConstant) {
return folded.GetConstantValue();
}
throw new InvalidOperationException(GetType().Name + " is not a constant");
}