Object (@NotNull Element entry, @NotNull String attributeName, Object context, @Nullable Binding binding, @NotNull Class<?> valueClass) { Attribute attribute = entry.getAttribute(attributeName); if (attribute != null) { return XmlSerializerImpl.convert(attribute.getValue(), valueClass); } else if (!isSurroundKey()) { assert binding != null; for (Element element : entry.getChildren()) { if (binding.isBoundTo(element)) { return binding.deserializeUnsafe(context, element); } } } else { Element entryChild = entry.getChild(attributeName); List<Element> children = entryChild == null ? Collections.emptyList() : entryChild.getChildren(); if (children.isEmpty()) { return null; } else { assert binding != null; return Binding.deserializeList(binding, null, children); } } return null; }