private Component xmlCreateComponent(Element elt,
			DockableState.Location dockableLocation) throws SAXException {
		if (elt.getNodeName().equals("Split")) {
			SplitContainer split = xmlBuildSplitContainer(elt, dockableLocation);
			return split;
		} else if (elt.getNodeName().equals("Dockable")) {
			Dockable d = xmlGetDockable(elt);
			SingleDockableContainer sdc = DockableContainerFactory
					.getFactory()
					.createDockableContainer(
							d,
							DockableContainerFactory.ParentType.PARENT_SPLIT_CONTAINER);
			context.setDockableState(d, new DockableState(this, d,
					dockableLocation));
			d.getDockKey().setLocation(dockableLocation);
			sdc.installDocking(this);

			if (d instanceof CompoundDockable) {
				// check for children and build them
				xmlBuildCompoundDockable((CompoundDockable) d, elt,
						dockableLocation);
			}
			return (Component) sdc;
		} else if (elt.getNodeName().equals("TabbedDockable")) {

			TabbedDockableContainer tdc = xmlBuildTabbedDockableContainer(elt,
					dockableLocation);
			return (Component) tdc;
		} else if (elt.getNodeName().equals("MaximizedDockable")) {

			// this should be the last element from DockingPanel node
			Dockable d = xmlGetDockable(elt);
			maximize(d);
			return null;
		} else {
			throw new SAXNotRecognizedException(elt.getNodeName());
		}
	}