forgot what invariant typevar means AGAIN, i can never memorize that stuff
list[T] is invariant in T because list[Child] is not a subtype of list[Parent] and list[Parent] is not a subtype of list[Child]