https://zoheirsoftware.com/blog/anonymous-methods-in-csharp