Sorry, I don’t understand the question. Can you clarify?
Are you asking how the List has all of the boxes when we are setting mCurrentBox to null? If so, this is because the the Box object is referenced by mCurrentBox and by the list (so 2 references). When you set mCurrentBox to null, you remove one of those references but the list still has a reference to the Box object.
So, you’re setting a pointer to null, not the actual object itself.