public void OnBreakpointChanged(BreakpointEventType eventType)
        {
            IPendingBreakpoint[] breakpoints =
            {
                GetBreakpointSubstitute(1), GetBreakpointSubstitute(2),
                GetBreakpointSubstitute(3)
            };
            _breakpointManager.GetPendingBreakpointById(Arg.Any <int>(), out IPendingBreakpoint _)
            .Returns(x =>
            {
                x[1] = breakpoints.First(b => b.GetId() == (int)x[0]);
                return(true);
            });
            SbEvent evnt = Substitute.For <SbEvent>();
            IEventBreakpointData breakpointData = Substitute.For <IEventBreakpointData>();

            evnt.IsBreakpointEvent.Returns(true);
            evnt.BreakpointData.Returns(breakpointData);
            breakpointData.BreakpointId.Returns(2);
            breakpointData.EventType.Returns(eventType);

            _attachedProgram.Start(Substitute.For <IDebugEngine2>());
            _listenerSubscriber.BreakpointChanged +=
                Raise.EventWith(null, new BreakpointChangedEventArgs(evnt));

            breakpoints[0].DidNotReceive().UpdateLocations();
            breakpoints[1].Received(1).UpdateLocations();
            breakpoints[2].DidNotReceive().UpdateLocations();
        }
        /// <summary>
        /// If a remote breakpoint gets bound, binds local breakpoint as well.
        /// </summary>
        void OnBreakpointChanged(object sender, BreakpointChangedEventArgs args)
        {
            IEventBreakpointData breakpointData = args.Event.BreakpointData;

            if (breakpointData.EventType.HasFlag(BreakpointEventType.LOCATIONS_ADDED) ||
                breakpointData.EventType.HasFlag(BreakpointEventType.LOCATIONS_REMOVED))
            {
                if (_breakpointManager.GetPendingBreakpointById(
                        breakpointData.BreakpointId, out IPendingBreakpoint pendingBreakpoint))
                {
                    pendingBreakpoint.UpdateLocations();
                }
            }
        }