Zadanie na laboratorium 13: ProszÄ wpierw stworzyÄ prosty interfejs dla niezmienialnych zbiorĂłw z parametryzowany typem przechowywanych elementĂłw T. Taki zbiĂłr powinien mieÄ metody: - sprawdzania, czy jakiĹ element jest w zbiorze; - wielkoĹÄ, niepustoĹÄ zbioru; - dodanie i odjÄcie elementu do/ze zbioru: w tym wypadku, powinien zostaÄ zwrĂłcony *nowy* obiekt reprezentujÄ cy powiÄkszony/zmniejszony zbiĂłr, podczas gdy poprzedni obiekt powinien byÄ nadal w peĹni funkcjonalny. Ponadto, interfejs powinien rozszerzaÄ interfejs Iterable<T> tak, by moĹźna byĹo tworzyÄ iteratory do tego zbioru. NastÄpnie stwĂłrz implementacjÄ tego interfejsu dla typĂłw T implements Comparable<T> przy pomocy drzewa BST. Metody dodawania i odejmowania powinny przebudowywaÄ ĹcieĹźkÄ od korzenia do wĹaĹciwego wierzchoĹka (dodanego, przestawionego, etc.), zaĹ poboczne drzewa majÄ pozostaÄ nieruszone. Iterator powinien siÄ iterowaÄ caĹy czas po tym samym zbiorze. WskazĂłwka: iterator moĹźe trzymaÄ w sobie wiÄcej niĹź tylko wierzchoĹek, w ktĂłrym siÄ obecnie znajduje, Ĺźeby wiedziaĹ, w jakim kontekĹcie iterowania przez zbiĂłr jesteĹmy.