anchor.diff:                  this.FoundSpanBegin.Invoke(CommentBlockSpan(),i,1)
                           
               if (this.CurRule.Name <> "String") then
  -                let span = 
  -                    if currentText.IsAt(textOffset, "\"") then
  -                        StringSpan() :> AbstractStringSpan
  -                    elif currentText.IsAt(textOffset, "\"\"\"") then
  -                        TripleQuotedStringSpan():> AbstractStringSpan
  -                    elif currentText.IsAt(textOffset, "@\"") then
  -                        VerbatimStringSpan():> AbstractStringSpan
  -                    else null
  -                if (span <> null) then
  -                    this.FoundSpanBegin.Invoke(span, i, span.Begin.Pattern.Length)
  -                    i <- i + span.Begin.Pattern.Length
  -            else 
  -                if typeof<AbstractStringSpan>.IsAssignableFrom(this.CurSpan.GetType()) then
  -                    if (currentText.Contains("\"\"\"")) then
  -                        this.FoundSpanEnd.Invoke(this.CurSpan,i + currentText.IndexOf("\"\"\""),3)
  -                        
  +                if this.CurSpan <> null && typeof<AbstractBlockSpan>.IsAssignableFrom(this.CurSpan.GetType()) && not (this.CurSpan :?> AbstractBlockSpan).Disabled then
  +                    let span = 
  +                        if currentText.IsAt(textOffset, "\"\"\"") then
  +                            TripleQuotedStringSpan():> AbstractStringSpan
  +                        elif currentText.IsAt(textOffset, "@\"") then
  +                            VerbatimStringSpan():> AbstractStringSpan
  +                        elif currentText.IsAt(textOffset, "\"") then
  +                            StringSpan() :> AbstractStringSpan
  +                        else null
  +                    if (span <> null) then
  +                        this.FoundSpanBegin.Invoke(span, i + textOffset, span.Begin.Pattern.Length)
  +                        i <- i + textOffset 
  +            elif typeof<AbstractStringSpan>.IsAssignableFrom(this.CurSpan.GetType()) then
  +                if typeof<TripleQuotedStringSpan>.IsAssignableFrom(this.CurSpan.GetType()) && (currentText.Contains("\"\"\"")) then
  +                    this.FoundSpanEnd.Invoke(this.CurSpan,i + currentText.LastIndexOf("\"\"\""),3)
  +                    i <- i + textOffset
  +                elif currentText.Substring(textOffset).Contains("\"") then
  +                    this.FoundSpanEnd.Invoke(this.CurSpan,i + currentText.LastIndexOf("\""),1)
  +                    i <- i + currentText.LastIndexOf("\"")
  +                elif currentText.Contains("#endif") then
  +                    this.FoundSpanEnd.Invoke(this.CurSpan,i+textOffset,1)
  +                    i <- i + textOffset
               if (textOffset < this.CurText.Length && this.CurRule.Name <> "Comment" &&
                   this.CurRule.Name <> "String" && this.CurRule.Name <> "VerbatimString" &&
                   this.CurText.[textOffset] = '#' && this.IsFirstNonWsChar(textOffset)) then
  
positive.code:     type TripleQuotedStringSpan() as this =
          inherit AbstractStringSpan()
          do
              this.End <- Regex("\"\"\"")
  
      type VerbatimStringSpan() as this =
  
negative.code:         System.Diagnostics.Debug.AutoFlush <- true
      let mutable m_Document : MonoDevelop.Ide.Gui.Document = null
      let mutable m_ParsedDocument : FSharp.CompilerBinding.ParseAndCheckResults option = None
      
      let getDefineSymbols (project: MonoDevelop.Projects.Project) =
          seq { 
  