NodeList extends NodeFeature implements ReactiveValue { public void splice(int index, int remove) { JsArray<Object> removed = values.splice(index, remove); eventRouter.fireEvent(new ListSpliceEvent(this, index, removed, JsCollections.array(), false)); } NodeList(int id, StateNode node); int length(); Object get(int index); void set(int index, Object value); void add(int index, Object item); void splice(int index, int remove); void clear(); final void splice(int index, int remove, JsArray<?> add); @Override JsonValue getDebugJson(); @Override JsonValue convert(Function<Object, JsonValue> converter); EventRemover addSpliceListener(ListSpliceListener listener); @Override EventRemover addReactiveValueChangeListener(
            ReactiveValueChangeListener reactiveValueChangeListener); void forEach(ForEachCallback<Object> callback); boolean hasBeenCleared();  }
@Test public void testSplice() { list.splice(0, 0, JsCollections.array("1", "2", "3")); Assert.assertEquals(3, list.length()); Assert.assertEquals("1", list.get(0)); Assert.assertEquals("2", list.get(1)); Assert.assertEquals("3", list.get(2)); list.splice(0, 2); Assert.assertEquals(1, list.length()); Assert.assertEquals("3", list.get(0)); }