-
unintuitively the hardest part of writing a good compiler has been: given a call site with argument types A and a set of candidate methods M pick the "best" method to invoke. there are rules in the C# spec, but its a lot more delicate than i would have expected.