import java.util.LinkedList class A : ArrayList() { fun getFirst(): T = super.getFirst() fun getLast(): T = super.getLast() } fun foo(x: List, y: LinkedList, z: A) { x.getFirst() x.first x.first() // stdlib extension on List x.getLast() x.last x.last() y.getFirst() y.first y.first() y.getLast() y.last y.last() z.getFirst() z.first z.first() z.getLast() z.last z.last() }