anchor.diff:      let private mangleStaticStringArg (nm:string,v:string) = 
           nm + "=" + "\"" + v.Replace("\\", "\\\\").Replace("\"", "\\\"") + "\""
   
  -    let private tryDemangleStaticStringArg (mangledText:string) = 
  -        let pieces = splitAroundQuotationWithCount mangledText '=' 2
  -        if pieces.Length <> 2 then None else
  -        let nm = pieces.[0]
  -        let v = pieces.[1]
  -        if v.Length >= 2 then 
  -            Some(nm,v.[1..v.Length-2].Replace("\\\\","\\").Replace("\\\"","\""))
  -        else
  -            Some(nm,v)
  +    let private tryDemangleStaticStringArg (mangledText:string) =
  +        match splitAroundQuotationWithCount mangledText '=' 2 with
  +        | [| nm; v |] ->
  +            if v.Length >= 2 then
  +                Some(nm,v.[1..v.Length-2].Replace("\\\\","\\").Replace("\\\"","\""))
  +            else
  +                Some(nm,v)
  +        | _ -> None
   
       // Demangle the static parameters
       exception InvalidMangledStaticArg of string
  
positive.code:     //IsActivePatternName "||S|" = true
  
      type ActivePatternInfo = 
          | APInfo of bool * string list 
          member x.IsTotal = let (APInfo(p,_)) = x in p
          member x.ActiveTags = let (APInfo(_,tags)) = x in tags
  
  
negative.code:         //------
          // This function recognises these "infix operator" names.
          let s = DecompileOpName s
          let skipIgnoredChars = s.TrimStart(ignoredChars)
          let afterSkipStartsWith prefix   = skipIgnoredChars.StartsWith(prefix,System.StringComparison.Ordinal)
          let afterSkipStarts     prefixes = Array.exists afterSkipStartsWith prefixes
          // The following conditions follow the declExpr infix clauses.
          // The test corresponds to the lexer definition for the token.
          s = ":=" ||                                    // COLON_EQUALS
          afterSkipStartsWith "|" ||                     // BAR_BAR, INFIX_BAR_OP
          (* REVIEW: OR is deadcode, now called BAR? *)  // OR
          afterSkipStartsWith "&"  ||                    // AMP, AMP_AMP, INFIX_AMP_OP
          afterSkipStarts relational ||                  // EQUALS, INFIX_COMPARE_OP, LESS, GREATER
          s = "$" ||                                     // DOLLAR
          afterSkipStarts concat ||                      // INFIX_AT_HAT_OP
          s = "::" ||                                    // COLON_COLON
          afterSkipStarts plusMinus ||                   // PLUS_MINUS_OP, MINUS
          afterSkipStarts otherMath ||                   // PERCENT_OP, STAR, INFIX_STAR_DIV_MOD_OP
          s = "**"                                       // INFIX_STAR_STAR_OP
  
      let (|Control|Equality|Relational|Indexer|FixedTypes|Other|) opName =
          match opName with
          | "&" | "or" | "&&" | "||" ->
              Control
          | "<>" | "=" ->
              Equality
          | "<" | ">" | "<=" | ">=" ->
              Relational
          | "<<" | "<|" | "<||" | "<||" | "|>" | "||>" | "|||>" | ">>" | "^" | ":=" | "@" ->
              FixedTypes
          | ".[]" ->
              Indexer
          | _ ->
              Other
  
      let [<Literal>] private compilerGeneratedMarker = "@"
      let [<Literal>] private compilerGeneratedMarkerChar = '@'
      
      let IsCompilerGeneratedName (nm:string) =
          nm.IndexOf compilerGeneratedMarkerChar <> -1
  