public IEnumerable <MenuAction <ConversationNode> > GetMenuActions(IGraphEditorControl <ConversationNode> control, IProject2 project, Action <IEnumerable <IErrorListElement> > log, ILocalizationEngine localizer) { Action <ConversationNode, Point> jump = (n, p) => { if (n.Data.NodeTypeId == SpecialNodes.JumpTo) { var targetnodes = control.CurrentFile.Nodes.Where(a => a.Data.NodeTypeId == SpecialNodes.JumpTarget); var target = targetnodes.FirstOrDefault(t => GetId(t) == GetTarget(n)); if (target != null) { control.SelectNode(target); } } else if (n.Data.NodeTypeId == SpecialNodes.JumpTarget) { var sourceNodes = control.CurrentFile.Nodes.Where(a => a.Data.NodeTypeId == SpecialNodes.JumpTo); var source = sourceNodes.FirstOrDefault(t => GetTarget(t) == GetId(n)); if (source != null) { control.SelectNode(source); } } }; yield return(new MenuAction <ConversationNode>("Jump", (n, p) => (n.Data.NodeTypeId == SpecialNodes.JumpTo || n.Data.NodeTypeId == SpecialNodes.JumpTarget ? () => jump(n, p) : (Action)null), null, null, null)); }