anchor.diff:                              
           member private this.ScanPreProcessorElse(i: byref<int>) =
               if not (spanStack |> contains (fun span -> span.GetType() = typeof<IfBlockSpan>)) then
  -                this.ScanSpan (&i) |> ignore
  +                i <- i + "#else".Length
                   ()
               let mutable previousResult = false
               for span in spanStack do
  
positive.code:     type System.String with
          member this.IsAt (idx, pattern:string) =
              let strVal = this
              let mutable result = true
              if (idx + pattern.Length > strVal.Length) then
                  false
              else
                  for i in [0..pattern.Length-1] do
                      let patPart = pattern.[i]
                      let strValPart = strVal.[idx + i]
                      if (patPart <> strValPart) then
                          result <- false
                  result
  
      type AbstractBlockSpan (isValid) =
          inherit Span()
  
negative.code:                 this.CurRule.Name <> "String" && this.CurRule.Name <> "VerbatimString" &&
                  this.CurText.[textOffset] = '#' && this.IsFirstNonWsChar(textOffset)) then
                  
                  if currentText.Substring(textOffset).StartsWith("#else") then
                      this.ScanPreProcessorElse(&i)
                      true
                  elif currentText.Substring(textOffset).StartsWith("#if") then
                      this.ScanPreProcessorIf(textOffset,&i)
                      false      
                  elif currentText.Substring(textOffset).StartsWith("#endif") then
                      let span = EndIfBlockSpan()
                      this.FoundSpanBegin.Invoke(span, i + textOffset, 6)
                      this.FoundSpanEnd.Invoke(span, i + textOffset + 6,0)
  