java.lang.reflect.Proxy.getProxyClass currently specifies the following restriction on the list of interfaces passed to it:
No two interfaces may each have a method with the same name and
parameter signature but different return type.
For Tiger, to be consistent with planned language changes, this restriction should be loosened to be something along these lines:
For any set of member methods of the specified interfaces that have
the same signature:
- if the return type of any of the methods is a primitive type, then
all of the methods must have the same return type, and otherwise,
- one of the methods must have a return type that is assignable
to the return types of the rest of the methods.