@Override
  public @NotNull <T> Object deserialize(@Nullable Object bean, @NotNull T element, @NotNull DomAdapter<T> adapter) {
    assert bean != null;
    @SuppressWarnings("unchecked")
    List<String> list = (List<String>)accessor.read(bean);
    list.clear();
    if (adapter.getName(element).equals(name)) {
      for (T item : adapter.getChildren(element)) {
        if (adapter.getName(item).equals("item")) {
          String v = adapter.getAttributeValue(item, Constants.VALUE);
          if (v != null) {
            list.add(v);
          }
        }
      }
    }
    else {
      // JDOMExternalizableStringList format
      T value = adapter.getChild(element, Constants.VALUE);
      if (value != null) {
        value = adapter.getChild(value, "list");
      }
      if (value != null) {
        for (T item : adapter.getChildren(value)) {
          String v = adapter.getName(item).equals("item") ? adapter.getAttributeValue(item, "itemvalue") : null;
          if (v != null) {
            list.add(v);
          }
        }
      }
    }
    return list;
  }
@Override
  public @NotNull <T> Object deserialize(@Nullable Object bean, @NotNull T element, @NotNull DomAdapter<T> adapter)