private boolean categoriesInitialised;
public Iterator categories() {
if (!categoriesInitialised) {
Iterator categories = new ReadOnlyCollectionIterator(
this.categories);
while (categories.hasNext()) {
Category category = (Category) categories.next();
category.initalize();
}
categoriesInitialised = true;
}
return new ReadOnlyCollectionIterator(categories);
}