public @NotNull Element read(@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;
  }
public @NotNull Element read(@NotNull Element parentNode)