@Retention(value=RUNTIME) public @interface Infer
The compiler infers that the return-type is the type of the first actual argument.
This feature of the language helps to deal with the lack of generics.