By comparison, if the delegate is a constructor param, it's easy:
Copy code
class PropList<T>(private val delegate: ArrayList<T>) : MutableList<T> by delegate {
override fun add(element: T): Boolean {
// extra stuff I need to do
return delegate.add(element)
}
}