data class BeanDefinition<T>
BeanDefinition(interfaceClass: Class<T>, concreteClass: Class<out T>)
val concreteClass: Class<out T>
val interfaceClass: Class<T>