anchor.diff:  type Plain =
       private {
           ``fixed`` : string
  -        mutable optimized : string
  +        mutable optimized : RGXType list
           Token     : Token list
       }
       override this.ToString() = sprintf "%s" this.``fixed``
   
       member this.OptimizeOnce() = 
  -        if (this.optimized = "") then
  -            this.optimized <- this.``fixed``.Replace("\\{","{")
  -                .Replace("\\}","}")
  -                .Replace("\\[","[")
  -                .Replace("\\]","]")
  -                .Replace("\\(","(")
  -                .Replace("\\)",")")
  -                .Replace("\\|","|")
  -                .Replace("\\+","+")
  -                .Replace("\\*","*")
  -                .Replace("\\.",".")
  -                .Replace("\\?","?")
  -                .Replace("\\\\","\\")
  +        if (this.optimized = []) then
  +            let unescapedString = 
  +                this.``fixed``
  +                    .Replace("\\{","{")
  +                    .Replace("\\}","}")
  +                    .Replace("\\[","[")
  +                    .Replace("\\]","]")
  +                    .Replace("\\(","(")
  +                    .Replace("\\)",")")
  +                    .Replace("\\|","|")
  +                    .Replace("\\+","+")
  +                    .Replace("\\*","*")
  +                    .Replace("\\.",".")
  +                    .Replace("\\?","?")
  +                    .Replace("\\\\","\\")
  +
  +            this.optimized <-
  +                unescapedString.ToCharArray()
  +                |>  List.ofArray
  +                |>  List.map(fun c -> Plain <| Plain.Create (c.ToString()) this.Token)
  +                |>  List.rev
   
       static member (+) (r1:Plain, r2:Plain) = 
           let appd = r1.``fixed`` + r2.``fixed``
  -        {``fixed`` = appd; ``optimized`` = ""; Token = r1.Token @ r2.Token}
  -
  -    static member Create r t = {``fixed`` = r; Token = t; optimized = ""}
  -
  -
  -type OneInSet =
  +        {``fixed`` = appd; ``optimized`` = []; Token = r1.Token @ r2.Token}
  +
  +    static member Create r t = {``fixed`` = r; Token = t; optimized = []}
  +
  +
  +and OneInSet =
       private {
           not      : bool
           mainset  : string
  
positive.code:         {this with not = true}
  
  
  type RGXType =
      |   Plain of Plain
      |   OneInSet   of OneInSet
      |   Or         of RGXType list
  
negative.code:                     |   (_, []) -> true, []
                      | _ ->
                          if pl.``fixed``.Length > 1 then
                              pl.OptimizeOnce()
                              parse (Concat pl.optimized) tkl
                          else
                              rs.Get() |> fun i -> pl.``fixed`` = i.Source |> mkResult i tkl
                  else
  