How to not write inheritance code in Kotlin

When you write a couple of classes and just realise that there are functionalities that can be shared, a tendency is to create a parent / abstract class or define a utility class. But inheritance and global utilities are often hard to test, failed to encapsulate functionality and highly coupled. In practices, using an interface offers a better design.

In this instance, I have several Adapter classes (in Spring) that wrap synchronous JDBC calls with a thread pool.

@Component
class ReactiveUserRelationalAdapter(
@Autowired