public static Component restoreSplitLayout(Object component, Container parent, DraggableTabbedPane root){
		if(!(component instanceof ArrayList))
			return null;
		ArrayList list = (ArrayList)component;
		//Split pane
		if(list.size() == 3 && ((ArrayList)component).get(0) instanceof Integer){
			JSplitPane split = new JSplitPane();
			Component left = restoreSplitLayout(list.get(1), split, root);
			if(left == null) // If the only tabs here are not present (meterp, file, etc)
				return restoreSplitLayout(list.get(2), parent, root); //return other side
			//Get right
			Component right = restoreSplitLayout(list.get(2), split, root);
			if(right == null){
				//uhoh. now we told left the wrong parent. Fix.
				if(left instanceof DraggableTabbedPane)
					((DraggableTabbedPane)left).paneParent = parent;
				return left;
			}
			//Ok! both sides are good. Plug 'em in and we'll go
			split.setOrientation((Integer)list.get(0));
			split.setLeftComponent(left);
			split.setRightComponent(right);
			return split;
		}
		DraggableTabbedPane pane = new DraggableTabbedPane(parent);
		for(Object o : list)
			if(root.indexOfTab(o.toString()) != -1)
				root.moveTabTo(root.indexOfTab(o.toString()), pane);
		if(pane.getTabCount() == 0)
			return null;
		root.paneParent = null; //we're disconnecting you
		return pane;
	}