MulticastDelegate
delegate TResult Foo1<TResult,TArg>(TimeSpan timeout, TArg arg0)
TResult
TimeSpan
TArg