code: void refresh() {
      int pos = 0;
      for (final T item : backing) {
        if (pos < size()) {
          set(pos, item);
        } else {
          assert pos == size();
          add(pos, item);
        }
        pos++;
      }
      while (backing.size() < size()) {
        remove(size() - 1);
      }
      assert backing.size() == size();
      assert backing.equals(workingCopy);
    }
docs: Refresh the editors in case the backing list has been modified from outside the
  ListEditorWrapper list.
  <p>
  This is basically the opposite from {@link #flush()}. It's used to reuse sub-editors instead of
  recreating a ListEditorWrapper from scratch.
  </p>