Element (@NotNull Element parentNode) { List<Element> tabs = parentNode.getChildren(StringUtil.getShortName(TabImpl.class.getName())); for (Element eachTabElement : tabs) { TabImpl eachTab = XmlSerializer.deserialize(eachTabElement, TabImpl.class); XmlSerializer.deserializeInto(eachTabElement, getOrCreateTab(eachTab.getIndex())); } final List<Element> views = parentNode.getChildren(StringUtil.getShortName(ViewImpl.class.getName())); for (Element content : views) { final ViewImpl view = new ViewImpl(); XmlSerializer.deserializeInto(content, view); view.assignTab(getOrCreateTab(view.getTabIndex())); myViews.put(view.getID(), view); } Element general = parentNode.getChild(StringUtil.getShortName(myGeneral.getClass().getName(), '$')); XmlSerializer.deserializeInto(general == null ? new Element("state") : general, myGeneral); return parentNode; }