Given an interface type argument, creates a proxy object of the type of the interface which implements all its methods by routing them to this universal function.
Given an interface type argument, creates a proxy object of the type of the interface which implements all its methods by routing them to this universal function. Will throw an exception in the face of any bad data.
For certain reflection tasks it is convenient to treat all methods as having the same signature: (Seq[AnyRef]) => AnyRef
That is the "universal signature" and UniversalFn exists to provide it without abandoning the information we had before we needed it. One place this is used: closures can pose as arbitrary interfaces, and this is how we route the arguments from the actual method invocation (which targets a proxy object) to the original closure.