public IEnumerable <ITagSpan <T> > GetTags(NormalizedSnapshotSpanCollection spans)
 {
     foreach (var breakpointTag in breakpointManager.GetBreakpoints(spans[0].Snapshot))
     {
         var span = breakpointTag.Span;
         if (spans.IntersectsWith(span))
         {
             var breakpoint = breakpointTag.Breakpoint;
             var status     = DebuggingService.GetBreakpointStatus(breakpoint);
             if (breakpoint.Enabled)
             {
                 if (status == BreakEventStatus.Bound || status == BreakEventStatus.Disconnected)
                 {
                     yield return(new TagSpan <T> (span, tag));
                 }
                 else
                 {
                     yield return(new TagSpan <T> (span, invalid));
                 }
             }
             else
             {
                 yield return(new TagSpan <T> (span, disabled));
             }
         }
     }
 }
 public IEnumerable <ITagSpan <BaseBreakpointGlyphTag> > GetTags(NormalizedSnapshotSpanCollection spans)
 {
     foreach (var breakpointTag in breakpointManager.GetBreakpoints(spans[0].Snapshot))
     {
         var span = breakpointTag.Span;
         if (spans.IntersectsWith(span))
         {
             var  breakpoint = breakpointTag.Breakpoint;
             bool tracepoint = (breakpoint.HitAction & HitAction.Break) == HitAction.None;
             if (breakpoint.Enabled)
             {
                 var status = DebuggingService.GetBreakpointStatus(breakpoint);
                 if (status == BreakEventStatus.Bound || status == BreakEventStatus.Disconnected)
                 {
                     if (tracepoint)
                     {
                         yield return(new TagSpan <TracepointGlyphTag> (span, new TracepointGlyphTag(breakpoint)));
                     }
                     else
                     {
                         yield return(new TagSpan <BreakpointGlyphTag> (span, new BreakpointGlyphTag(breakpoint)));
                     }
                 }
                 else
                 {
                     if (tracepoint)
                     {
                         yield return(new TagSpan <TracepointInvalidGlyphTag> (span, new TracepointInvalidGlyphTag(breakpoint)));
                     }
                     else
                     {
                         yield return(new TagSpan <BreakpointInvalidGlyphTag> (span, new BreakpointInvalidGlyphTag(breakpoint)));
                     }
                 }
             }
             else
             {
                 if (tracepoint)
                 {
                     yield return(new TagSpan <TracepointDisabledGlyphTag> (span, new TracepointDisabledGlyphTag(breakpoint)));
                 }
                 else
                 {
                     yield return(new TagSpan <BreakpointDisabledGlyphTag> (span, new BreakpointDisabledGlyphTag(breakpoint)));
                 }
             }
         }
     }
 }