public Subscription addSubscriber(Function<? super E, Subscription> subscriber) {
        Objects.requireNonNull(subscriber);
        subscribers.add(subscriber);

        List<E> keys = new ArrayList<>(map.keySet());
        keys.forEach(key -> {
            List<Subscription> otherSubs = map.get(key);
            Subscription sub = subscriber.apply(key);
            otherSubs.add(sub);
            map.put(key, otherSubs);
        });

        return () -> removeSubscriber(subscriber);
    }
@Test
    public void adding_subscriber_and_removing_it_will_not_throw_exception() {
        SubscribeableContentsObsSet<Integer> set = new SubscribeableContentsObsSet<>();
        Subscription removeSubscriber = set.addSubscriber(i -> Subscription.EMPTY);
        removeSubscriber.unsubscribe();
    }