public TabInstance Create() { if (Bookmark.Type == null) { return(null); } if (!typeof(ITab).IsAssignableFrom(Bookmark.Type)) { throw new Exception("Bookmark.Type must implement ITab"); } var call = new Call(); Bookmark bookmarkCopy = Bookmark.DeepClone(call, true); // This will get modified as users navigate ITab tab = bookmarkCopy.TabBookmark.Tab; if (tab == null) { tab = (ITab)Activator.CreateInstance(bookmarkCopy.Type); } if (tab is IReload reloadable) { reloadable.Reload(); } TabInstance tabInstance = tab.Create(); tabInstance.Project = Project.Open(bookmarkCopy); tabInstance.iTab = this; tabInstance.IsRoot = true; tabInstance.SelectBookmark(bookmarkCopy.TabBookmark); return(tabInstance); }