variables don’t have types

conceptually you are using that variable to point to a linked list

a linked list is empty or a cell

you’d start with empty

```
empty
```

and to prepend something you put it in a cell

```
cell(5, empty)
```

repeat for each prepend

```
cell(1, cell(3, cell(5, empty)))
```

to determine whether a linked list is empty, you compare it to empty

```
if mylist == empty
```

how you define empty is up to you so long as you can tell it apart from actual values

it would be nice if both cell and empty are instances of LinkedList, which you can achieve with inheritance, or perhaps by letting empty be a special case of cell, but you’re not, so you’re completely ignoring types and instead looking at what the values look like

but you’re ignoring that value so it’s completely irrelevant what it is, you could use any value, you’re using self.size to determine if there are more values … which is a bit bloated really, and is related to the artificial stack limit (there’s no reason for that limit)