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