El tipo de propiedad no es un tipo de excedente

Perdón por el título no específico, realmente no sé cómo nombrarlo mejor.
Tengo el siguiente ejemplo:

class User interface Repository<T, ID> interface UserRepository : Repository<User, Long> abstract class RepositoryTest<T, ID> { abstract var repository: Repository<T, ID> } class UserRepositoryTest : RepositoryTest<User, Long>() { //Error: Var-property type is "UserRepository", which is not a type of overriden lateinit override var repository: UserRepository } 

Necesito esta architecture para la testing de la database. Repository tiene methods como insert, save, eliminar, etc. Quiero utilizar esta abstracción en RepositoryTest para eliminar todas las inputs e insert los datos necesarios antes de cada testing. En UserRepositoryTest , quiero especificar el repository como UserRepository (es un elemento secundario de Repository ), pero tomo un error mencionado en el ejemplo.
¿Por qué me da el error? Pensé que podía pasar el tipo de subtipo.