public <IV extends PrismValue, ID extends ItemDefinition> XNode serializeItem( Item<IV, ID> item, SerializationContext ctx) throws SchemaException { ListXNode xlist = new ListXNode(); List<IV> values = item.getValues(); ItemDefinition definition = item.getDefinition(); for (IV val : values) { XNode xsubnode = serializeItemValue(val, definition, ctx); xlist.add(xsubnode); } boolean asList; if (definition != null) { asList = definition.isMultiValue(); } else { asList = values.size() > 1; } if (asList) { return xlist; } else { if (xlist.isEmpty()) { return null; } else { return xlist.iterator().next(); } } }