MulticastDelegate
delegate TResult Foo5<TResult,TArg>(TimeSpan timeout, out TArg[] arg0)
TResult
TimeSpan
out
TArg[]