move interface generics resolution into GenericsUtils; fix interface generics resolution (support all cases)