Тема: Як очистити/перезапустити фільтр/стрім
Переписую/імплементую стандартний стрім, створюю свої фільтри та хочу після якогось з фільтрів та виводу елементів в консоль, пройтись ще раз по тим же елементам або по новим. 
Вимоги : це моя "домашня робота" (робота(не ІТ) платила за курси, хоч вони і для початківців а я щось більше знаю, але як відомо "дареному коню.."), отже вимоги вільний/творчий підхід, креативність. Мені і раніше стріми подобались (модно/молодіжно) а тут така мотивація - як не використати старі знання?! Може хто підкаже або сам "маявся такою же.." головоломною/експериментом.
Пробував 
System.out.println("TEST NOT DONE-> ");
reception.rooms().limit(15).forEach(System.out::println);
// цей стрім працює, показує 15 елементівб а нижній - лише 5
// далі після peek я ще фільтрів накидав і мені здалось що вони невірні, а ні, непрацє вже тут!
System.out.println("TEST NOT DONE-> ");
reception.rooms()
     .limit(20)          // HERE ARE A MISTAKE : limit = 5;
     .peek(System.out::println)А це в самому фільтрі
    // PROBABLY HERE ARE MISTAKE
    // why do we use findFirst()? because we need terminal operation and start new Stream
    // and findFirst() map one to many elements, where flatMap it`s mapping each elment to many (namy-to-many) that not good.
    public StreamOfRooms<T> clearFilter(StreamOfRooms<T> base) {
        System.out.println("Inside Clear filter");
        return new StreamOfRooms<>(this.findFirst().stream().flatMap(i -> base));
    }Ну і написав в commit на github що там не так. Дякую.
 , хотів виправити щось інше, знайшов ще щось, пофіксив і все запрацювало.  
 