private void SceneDocument_EditTransactionCompleting(object sender, EventArgs e) { SceneElement rootElement = this.sceneViewModel.RootNode as SceneElement; if (rootElement == null) { return; } Enumerable.ToList <AnnotationSceneNode>(Enumerable.Distinct <AnnotationSceneNode>(Enumerable.SelectMany <SceneElement, AnnotationSceneNode>(Enumerable.Select(Enumerable.Where(Enumerable.Select(Enumerable.Where <DocumentNodeChange>(this.sceneViewModel.Damage.CollapsedChangeList, (Func <DocumentNodeChange, bool>)(docChange => docChange.Action == DocumentNodeChangeAction.Remove)), docChange => new { docChange = docChange, element = this.sceneViewModel.GetSceneNode(docChange.OldChildNode) as SceneElement }), param0 => param0.element != null), param0 => param0.element), (Func <SceneElement, IEnumerable <AnnotationSceneNode> >)(elementDeleted => Enumerable.Cast <AnnotationSceneNode>((IEnumerable)this.annotationsSearchPath.Query((SceneNode)elementDeleted)))))).ForEach((Action <AnnotationSceneNode>)(annotation => AnnotationManagerSceneNode.CloneAnnotation(annotation, (SceneNode)rootElement))); }