private void Branch_Click(object sender, RoutedEventArgs e) { #if DEBUG ElementWatcher.ClearRecording(); ElementWatcher.Recording = true; #endif Project branchProject; if (versionManager == null) { versionManager = new VersionManager(); branchProject = versionManager.BranchProject(project, MainWindow.PIMRepresentantsSet.ElementRepresentationOrder, true); cbBranches.DataContext = versionManager; } else { branchProject = versionManager.BranchProject(project, MainWindow.PIMRepresentantsSet.ElementRepresentationOrder, false); } branchProject.CreateModelController(); branchProject.GetModelController().getUndoStack().ItemsChanged += MainWindow.UndoStack_ItemsChanged; cbBranches.SelectedItem = branchProject.Version; MainWindow.HasUnsavedChanges = true; #if DEBUG Tests.ModelIntegrity.ModelConsistency.CheckEverything(project); Tests.ModelIntegrity.ModelConsistency.CheckEverything(branchProject); Tests.ModelIntegrity.ModelConsistency.CheckElementSchema(ElementWatcher.CreatedElements, branchProject.Schema, null); Tests.ModelIntegrity.VersionsConsistency.CheckVersionsConsistency(versionManager); foreach (Element element in ElementWatcher.CreatedElements) { if (element.Version != branchProject.Version && !(element is InstantiatedProperty) && !(element is StereotypeInstance)) { System.Diagnostics.Debug.WriteLine(String.Format("{0} element without version", element)); } } #endif }