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