private void watch()

in model/src/main/java/jetbrains/jetpad/model/transform/Transformers.java [310:337]


          private void watch(final ItemT item, final ObservableList<ItemT> to) {
            ReadableProperty<ValueT> property = propSpec.apply(item);
            if (property == null) {
              throw new NullPointerException();
            }
            myListeners.put(item, property.addHandler(new EventHandler<PropertyChangeEvent<ValueT>>() {
              @Override
              public void onEvent(PropertyChangeEvent<ValueT> event) {
                boolean needMove = false;
                int sortedIndex = to.indexOf(item);
                if (sortedIndex > 0) {
                  ItemT before = to.get(sortedIndex - 1);
                  if (comparator.compare(before, item) > 0) {
                    needMove = true;
                  }
                }
                if (sortedIndex < to.size() - 1) {
                  ItemT after = to.get(sortedIndex + 1);
                  if (comparator.compare(item, after) > 0) {
                    needMove = true;
                  }
                }
                if (needMove) {
                  myCollectionListener.onItemSet(new CollectionItemEvent<>(item, item, -1, EventType.SET));
                }
              }
            }));
          }