class ObservableList extends AbstractObservableValue<List<? extends E>> implements List<E>,
                                                                                                   SettableValue<List<? extends E>> {

  public void endUpdate() {
    if (myUpdateCount == 0) {
      throw new IllegalStateException("Can't call ObservableList.endUpdate without matching beginUpdate");
    }

    --myUpdateCount;

    if (myUpdateCount == 0 && myInvalidatedWhileUpdating) {
      myInvalidatedWhileUpdating = false;
      notifyInvalidated();
    }
  }

  public  ObservableList();
  public  ObservableList(@NotNull Iterable<? extends E> otherCollection);

}