mvvmfx-utils/src/main/java/de/saxsys/mvvmfx/utils/listener/ListenerManager.java
public <T> void register(ObservableList<T> observable, ListChangeListener<? super T> listener) {
		if (!listChangeListeners.containsKey(observable)) {
			this.listChangeListeners.put(observable, Collections.newSetFromMap(new WeakHashMap<>()));
		}
		
		Set<ListChangeListener> observers = this.listChangeListeners.get(observable);
		observers.add(listener);
		observable.addListener(listener);
	}
public <T> void register(ObservableList<T> observable, ListChangeListener<? super T> listener) {
		if (!listChangeListeners.containsKey(observable)) {
			this.listChangeListeners.put(observable, Collections.newSetFromMap(new WeakHashMap<>()));
		}
		
		Set<ListChangeListener> observers = this.listChangeListeners.get(observable);
		observers.add(listener);
		observable.addListener(listener);
	}
public < T > void register ( ObservableList < T > observable , ListChangeListener < ? super T > listener ) { if ( ! listChangeListeners . containsKey ( observable ) ) { this . listChangeListeners . put ( observable , Collections . newSetFromMap ( new WeakHashMap <> ( ) ) ) ; } Set < ListChangeListener > observers = this . listChangeListeners . get ( observable ) ; observers . add ( listener ) ; observable . addListener ( listener ) ; }
Register the given {@link ListChangeListener} to the {@link ObservableList}. The listener is added to the
observable and will be added for management so it can be cleaned up with the {@link #clean()} method.

@param observable
the observable list that the listener is added to.
@param listener
the listener that is registered.
@param <T>
the generic type of the observable list.
Register the given { @link ListChangeListener } to the { @link ObservableList } . The listener is added to the observable and will be added for management so it can be cleaned up with the { @link #clean () } method .