namespace DelegateTypeInference {
public static void Main(string[] args) {
A(new ThreadStart(ShowTime));
A(delegate { ShowTime(); });
A(() => { ShowTime(); Console.WriteLine("boo"); });
C((a, b) => { ShowTime(); return null; });
static void ShowTime() { Console.WriteLine(DateTime.Now); }
static void A(ThreadStart t) { t(); }
static void B(WaitCallback w) { w(null); }
static void C(ModuleResolveEventHandler m) { Module mod = m(null, null); }