See also
Using generic lambdas
Writing a recursive lambda