anchor.diff:              if not this.HasRegisteredParsedEvent then
                   this.HasRegisteredParsedEvent <- true
                   m_Document.DocumentParsed.Add(HandleDocumentParsed)
  -        
  -        if (line.StartSpan.Count > 0) then
  -            let currentRuleName = line.StartSpan.Peek().Rule 
  -            if (currentRuleName = "Comment" || currentRuleName = "String" || currentRuleName = "VerbatimString") then
  -                base.GetChunks(style,line,offset,length)
  -            elif line.StartSpan.Count = 1 && typeof<FSharpSyntaxModeInternals.AbstractBlockSpan>.IsAssignableFrom(line.StartSpan.Peek().GetType())  then
  -                let isDisabled = (line.StartSpan.Peek() :?> FSharpSyntaxModeInternals.AbstractBlockSpan).Disabled
  -                let dt = this.Document.GetTextAt(line.Segment)
  -                if isDisabled then
  -                    if not (dt.StartsWith("#else")) && not (dt.StartsWith("#endif"))  then
  -                        Seq.singleton(Chunk(offset,length,"Excluded Code"))
  -                    else
  -                        Seq.singleton(Chunk(offset,length,style.Preprocessor.Name))
  -                else
  -                    this.getLexedChunks(style,line,offset,length)
  -            else
  -                this.getLexedChunks(style,line,offset,length)
  +        let docText = this.Document.GetTextAt(line.Segment)
  +        if docText.StartsWith("#if") || docText.StartsWith("#else") || docText.StartsWith("#endif") then
  +            base.GetChunks(style,line,offset,length) 
  +        elif (line.StartSpan.Count > 0) && (line.StartSpan.Peek().Rule = "Comment" || line.StartSpan.Peek().Rule = "String" || line.StartSpan.Peek().Rule = "VerbatimString") && not (typeof<FSharpSyntaxModeInternals.AbstractBlockSpan>.IsAssignableFrom(line.StartSpan.Peek().GetType())) then
  +            base.GetChunks(style,line,offset,length)
  +        elif 
  +            typeof<FSharpSyntaxModeInternals.AbstractBlockSpan>.IsAssignableFrom(line.StartSpan.Peek().GetType()) &&
  +            (line.StartSpan.Peek() :?> FSharpSyntaxModeInternals.AbstractBlockSpan).Disabled then 
  +                Seq.singleton(Chunk(offset,length,"Excluded Code"))
           else
               this.getLexedChunks(style,line,offset,length)
   
  
positive.code:             while spanStack.Count > 0 do
                  spanStack.Pop() |> ignore
              let elseBlockSpan = ElseBlockSpan(true)
              elseBlockSpan.Disabled <- not (this.CurSpan :?> IfBlockSpan).Disabled
              this.FoundSpanBegin.Invoke(elseBlockSpan, i , "#else".Length)
              i <- i + "#else".Length
              let preprocessorSpan = this.CreatePreProcessorSpan()
  
negative.code:                 disabled <- value
                  this.setColor()
  
      type EndIfBlockSpan() as this =
          inherit Span()
          do
              this.Color <- "Preprocessor"
              this.Rule <- "PreProcessorComment"
  
  
      type IfBlockSpan(isValid) =
          inherit AbstractBlockSpan(isValid)
          override this.ToString() =
  