You've been given the following code with questionable naming conventions.
interface foo {
fun printMessage()
}
class bar(val x: String) : foo {
override fun printMessage() {
print(x)
}
}
class baz(base: foo) : foo by base {
override fun printMessage() {
print("Hello Kotlin")
}
}
fun main() {
val b = bar("Hello Delegate")
baz(b).printMessage()
}
Can you identify all of these elements?