static void DemoVisitLambda() {
Expression<Func<int, int>> Formula =
	(n) => 1 + Double(n * (n % 2 == 0 ? -1 : 1));
Console.WriteLine(Formula.ToString());

int level = 0;
var visitFormula = ExprOp.Visit.Chain(
(self, last, expr) => {
if (expr != null) {
for (int i = 0; i < level; i++) {
	Console.Write(" ");
}
Console.WriteLine(
"{0} - {1}",
expr.NodeType,
expr.GetType().Name);
}
level++;
var result = last(expr);
level--;
return result;
}
);
visitFormula(Formula);
}
