I have the following abstract class with the method :: and the inner class ListNode
abstract class SimpleList[+Elem] { def head: Elem def tail: SimpleList