Reflection через generic добирается до реального типа view binding и вызывает его inflate.
Вот самый главный момент:
val genericViewBindingClassType =
(classInstance.javaClass.genericSuperclass as ParameterizedType).actualTypeArguments.find {
ViewBinding::class.java.isAssignableFrom(it as Class<*>)
}
@Suppress("UNCHECKED_CAST")
val actualViewBindingClassType = genericViewBindingClassType as Class<VB>
после этого уже обычный getMethod, чтобы найти inflate и вызвать его.