private void InitializeCommands()
        {
            AddBreakpointCommand = new DelegateCommand(
                obj =>
            {
                Debugger.AddBreak(DiagramEditor.SelectedElement.SelectedSocket);
                Changed.SafeInvoke();
            },
                obj => SafeCheckDebugger((d, s) => !d.IsBreak(s)));

            RemoveBreakpointCommand = new DelegateCommand(
                obj =>
            {
                Debugger.RemoveBreak(DiagramEditor.SelectedElement.SelectedSocket);
                Changed.SafeInvoke();
            },
                obj => SafeCheckDebugger((d, s) => d.IsBreak(s)));

            StepNextCommand = new DelegateCommand(
                obj => Debugger.StepNext(),
                obj => Debugger != null && Debugger.IsWaiting);

            StepIntoCommand = new DelegateCommand(
                obj => Debugger.StepInto(DiagramEditor?.SelectedElement as CompositionDiagramElement),
                obj => (Debugger != null && Debugger.IsWaitingOnInput && Debugger.CanStepInto) || DiagramEditor?.SelectedElement is CompositionDiagramElement);

            StepOutCommand = new DelegateCommand(
                obj => Debugger.StepOut(DiagramEditor.Composition),
                obj => Debugger != null && Debugger.CanStepOut);

            ContinueCommand = new DelegateCommand(
                obj => Debugger.Continue(),
                obj => Debugger != null && Debugger.IsWaiting);
        }