посмотрел, почитал, написал импрувментов (замечаний по улучшению)

Итак, собственно настоящих перетензий всего две. Пачка, непонятно зачем нужных, интерфейсов и странная передача итератора. Подробности и мелочи в тудушках.

Кстати, на всякий случай дублирую тут, скорее всего у тебя не везде указана кодировка правильная, потому могут быть проблемы с русскими текстами, в настройках idea на вкладке File Encodings везде надо выставить UTF-8

После исправления обнаруженных проблем можно будет сделать еще один заход (а потом еще один, и еще ;))