class Program {
static void Immutability() {
Expression<Func<int, int>> Formula = (n) => (n * 2 + 1) * 4;

Console.WriteLine(Formula.ToString());

Expression top = Formula.Body;
ConstantExpression constant = top.Right() as ConstantExpression;
Console.WriteLine(constant.Value);
constant.Value = 5; // Chyba pi kompilaci  Value je vlastnost uren pouze pro ten.
}
// dal kd (nap. Main) vynechn...
}

// Pomocn roziujc metody pro zjednoduen kdu.
// Tyto pomocn metody nejsou bezpen  generuj vjimku vdy, 
// kdy se je pokuste aplikovat na uzly, jen nejsou typu BinaryExpression.
public static class TreeHelper {
public static Expression Left(this Expression exp) {
	return (exp as BinaryExpression).Left;
}

public static Expression Right(this Expression exp) {
	return (exp as BinaryExpression).Right;
}
}
