code: public static <T> Subscription listBind(
              List<? super T> target,
              ObservableList<? extends T> source) {
          target.clear();
          target.addAll(source);
          ListChangeListener<? super T> listener = change -> {
              while(change.next()) {
                  int from = change.getFrom();
                  int to = change.getTo();
                  if(change.wasPermutated()) {
                      target.subList(from, to).clear();
                      target.addAll(from, source.subList(from, to));
                  } else {
                      target.subList(from, from + change.getRemovedSize()).clear();
                      target.addAll(from, source.subList(from, from + change.getAddedSize()));
                  }
              }
          };
          source.addListener(listener);
          return () -> source.removeListener(listener);
      }
docs: Sync the content of the {@code target} list with the {@code source} list.
  @return a subscription that can be used to stop syncing the lists.