package live; import listeners.ListenerHandle; public interface LiveList extends AutoCloseable, Iterable { @Override public void close(); int getLength(); int indexOf(T value); T getAt(int index); ListenerHandle> addListener(LiveList.Listener listener); public interface Listener { void onInserted(int index, T value); void onChanged(int index, T oldValue, T newValue); void onRemoved(int index, T oldValue); } }