Dynamic method selection is so confusing!
Here is Crystal’s DMS Flow chart from a few semesters ago. You can follow steps methodically.
Note that DMS is optional and out of scope for Summer 2025. The first slide of Crystal’s flowchart is in scope, as there is no method selection involved.
ListSet
Why does ListSet::remove have that given line?
As mentioned in the comment, the reason that we need the line is out of scope.
Specifically, the List interface has two remove methods:
remove(int index), that removes an element at a specific indexremove(Object elem), that removes a specific thing from the list
We would like to use the latter, so we must “autobox” the given int to
Integer with the given assignment statement.