The different implementation of the getModelItems method store the model items in a field and other method of the class directly read this field. This is extremely risky as it means some methods rely on other being called before without any mention of it anywhere.