code: private Object updateBufferedListModel(final Object wrappedCollection) {
          if (bufferedListModel == null) {
              bufferedListModel = createBufferedListModel();
              bufferedListModel.addListDataListener(listChangeHandler);
              setValue(bufferedListModel);
          }
          if (wrappedCollection == null) {
              bufferedListModel.clear();
          }
          else {
              if (wrappedType.isAssignableFrom(wrappedCollection.getClass())) {
                  Collection buffer = null;
                  if (wrappedCollection instanceof Object[]) {
                      Object[] wrappedArray = (Object[])wrappedCollection;
                      buffer = Arrays.asList(wrappedArray);
                  }
                  else {
                      buffer = (Collection)wrappedCollection;
                  }
                  bufferedListModel.clear();
                  bufferedListModel.addAll(prepareBackingCollection(buffer));
              }
              else {
                  throw new IllegalArgumentException("wrappedCollection must be assignable from " + wrappedType.getName());
              }
  
          }
          return bufferedListModel;
      }
docs: Gets the list value associated with this value model, creating a list
  model buffer containing its contents, suitable for manipulation.
  
  @return The list model buffer