void (@NotNull List<? super String> strings, Element element) { strings.clear(); Class callerClass = null; for (Element listElement : element.getChildren(ATTR_LIST)) { if (callerClass == null) { callerClass = ReflectionUtil.findCallerClass(2); assert callerClass != null; } final ClassLoader classLoader = callerClass.getClassLoader(); for (Element listItemElement : listElement.getChildren(ATTR_ITEM)) { if (!ATTR_ITEM.equals(listItemElement.getName())) { throw new IllegalDataException("Unable to read list item. Unknown element found: " + listItemElement.getName()); } String itemClassString = listItemElement.getAttributeValue(ATTR_CLASS); Class itemClass; try { itemClass = itemClassString == null ? String.class : Class.forName(itemClassString, true, classLoader); } catch (ClassNotFoundException ex) { throw new IllegalDataException("Unable to read list item: unable to load class: " + itemClassString + " \n" + ex.getMessage()); } String listItem = listItemElement.getAttributeValue(ATTR_VALUE); LOG.assertTrue(String.class.equals(itemClass)); strings.add(listItem); } } }