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);
	}
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.