protected fun getCollection(): MongoCollection<T> = getDaoEntityClass().let { k -> MongoDb.getDatabase().getCollection( KMongoUtil.defaultCollectionName(k), k.java) } @Suppress("UNCHECKED_CAST") private fun getDaoEntityClass(): KClass<T> = ((this::class.java.genericSuperclass as ParameterizedType).actualTypeArguments[0] as Class<T>).kotlin