diff --git a/platform/util/src/com/intellij/util/xmlb/TagBinding.java b/platform/util/src/com/intellij/util/xmlb/TagBinding.java index 6722d54f4a72..87508b61a3e0 100644 --- a/platform/util/src/com/intellij/util/xmlb/TagBinding.java +++ b/platform/util/src/com/intellij/util/xmlb/TagBinding.java @@ -58,13 +58,19 @@ class TagBinding extends BasePrimitiveBinding implements MultiNodeBinding { @Override public Object deserializeList(Object context, @NotNull List nodes) { boolean isBeanBinding = myBinding instanceof BeanBinding; - String name = ((Element)nodes.get(0)).getName(); - List children = new SmartList(); - for (Object node : nodes) { - Element element = (Element)node; - assert element.getName().equals(name); - //noinspection unchecked - children.addAll(((List)(isBeanBinding ? element.getChildren() : XmlSerializerImpl.getFilteredContent(element)))); + List children; + if (nodes.size() == 1) { + children = getContents(isBeanBinding, (Element)nodes.get(0)); + } + else { + String name = ((Element)nodes.get(0)).getName(); + children = new SmartList(); + for (Object node : nodes) { + Element element = (Element)node; + assert element.getName().equals(name); + //noinspection unchecked + children.addAll(((List)getContents(isBeanBinding, element))); + } } return deserialize(context, children, isBeanBinding); } @@ -79,7 +85,7 @@ class TagBinding extends BasePrimitiveBinding implements MultiNodeBinding { public Object deserialize(Object context, @NotNull Object node) { boolean isBeanBinding = myBinding instanceof BeanBinding; Element element = (Element)node; - return deserialize(context, isBeanBinding ? element.getChildren() : XmlSerializerImpl.getFilteredContent(element), isBeanBinding); + return deserialize(context, getContents(isBeanBinding, element), isBeanBinding); } private Object deserialize(Object o, List children, boolean isBeanBinding) { @@ -102,4 +108,9 @@ class TagBinding extends BasePrimitiveBinding implements MultiNodeBinding { public boolean isBoundTo(Object node) { return node instanceof Element && ((Element)node).getName().equals(myName); } + + @NotNull + private static List getContents(boolean isBeanBinding, Element element) { + return isBeanBinding ? element.getChildren() : XmlSerializerImpl.getFilteredContent(element); + } }