void (@NotNull Object result, @NotNull Element element, @Nullable Set<? super String> accessorNameTracker) { nextAttribute: for (org.jdom.Attribute attribute : element.getAttributes()) { if (StringUtilRt.isEmpty(attribute.getNamespaceURI())) { for (NestedBinding binding : bindings) { if (binding instanceof AttributeBinding && ((AttributeBinding)binding).name.equals(attribute.getName())) { if (accessorNameTracker != null) { accessorNameTracker.add(binding.getAccessor().getName()); } ((AttributeBinding)binding).set(result, attribute.getValue()); continue nextAttribute; } } } } LinkedHashMap<NestedBinding, List<Element>> data = null; nextNode: for (Content content : element.getContent()) { for (NestedBinding binding : bindings) { if (content instanceof org.jdom.Text) { if (binding instanceof TextBinding) { ((TextBinding)binding).set(result, content.getValue()); } continue; } Element child = (Element)content; if (binding.isBoundTo(child)) { if (binding instanceof MultiNodeBinding && ((MultiNodeBinding)binding).isMulti()) { if (data == null) { data = new LinkedHashMap<>(); } data.computeIfAbsent(binding, it -> new ArrayList<>()).add(child); } else { if (accessorNameTracker != null) { accessorNameTracker.add(binding.getAccessor().getName()); } binding.deserializeUnsafe(result, child); } continue nextNode; } } } for (Binding binding : bindings) { if (binding instanceof AccessorBindingWrapper && ((AccessorBindingWrapper)binding).isFlat) { binding.deserializeUnsafe(result, element); } } if (data != null) { for (NestedBinding binding : data.keySet()) { if (accessorNameTracker != null) { accessorNameTracker.add(binding.getAccessor().getName()); } ((MultiNodeBinding)binding).deserializeList(result, data.get(binding)); } } }