abstract class PersonList { } class EmptyPL extends PersonList { } class LargerPL extends PersonList { Person first; PersonList rest; LargerPL( Person first, PersonList rest ) { this.first = first; this.rest = rest; } } class Person { String name; PersonList kids; Person( String name, PersonList kids ) { this.name = name; this.kids = kids; } }