anchor.diff:          let resFST = new FST<_,_>()
           resFST.InitState.Add((fst perRuleData.[0]).Id) //we SUGGEST that we have one init state
           
  -        let stEOF = tableTransitions.[0].[256] 
  +        let stEOF = tableTransitions.[0].[(sizeTable - 1)] 
           new TaggedEdge<_,_>(0, stEOF, new EdgeLbl<_,_>(Smbl (char Eof), Eps)) |> resFST.AddVerticesAndEdge |> ignore
           resFST.FinalState.Add(stEOF)
                            
           for state in dfaNodes do
  -            for i in 0..256 do
  +            for i in 0..(sizeTable - 1) do
                   let st = tableTransitions.[state.Id].[i]
                   if st <> sentinel 
                   then 
  -                    new TaggedEdge<_,_>(state.Id, st, new EdgeLbl<_,_>(Smbl (char (if i = 256 then int Eof else i)), Eps)) |> resFST.AddVerticesAndEdge |> ignore                       
  +                    new TaggedEdge<_,_>(state.Id, st, new EdgeLbl<_,_>(Smbl (char (if i = sizeTable - 1 then int Eof else i)), Eps)) |> resFST.AddVerticesAndEdge |> ignore                       
                   else 
                       if state.Id <> 0
                       then 
                           let action = if actionFunc.[state.Id].Count > 0 then Smbl (actionFunc.[state.Id].[0]) else Eps
  -                        if tableTransitions.[0].[i] <> sentinel || i = 256 
  +                        if tableTransitions.[0].[i] <> sentinel || i = sizeTable - 1
                           then  
  -                            new TaggedEdge<_,_>(state.Id, tableTransitions.[0].[i], new EdgeLbl<_,_>(Smbl (char (if i = 256 then int Eof else i)), action)) |> resFST.AddVerticesAndEdge |> ignore
  +                            new TaggedEdge<_,_>(state.Id, tableTransitions.[0].[i], new EdgeLbl<_,_>(Smbl (char (if i = sizeTable - 1 then int Eof else i)), action)) |> resFST.AddVerticesAndEdge |> ignore
                               
           let getVal printV s = 
               match s with
  
positive.code:             let emit n = 
                  if trans.ContainsKey(n) then 
                    outputCodedUInt16 os trans.[n].Id 
                  else
                    outputCodedUInt16 os sentinel
              for i = 0 to numLowUnicodeChars-1 do 
                  let c = char i
                  emit (EncodeChar c);
              for c in specificUnicodeChars do 
                  outputCodedUInt16 os (int c); 
                  emit (EncodeChar c);
              for i = 0 to NumUnicodeCategories-1 do 
                  emit (EncodeUnicodeCategoryIndex i);
              emit Eof;
              cfprintfn os "|];"
          done;
      
  
negative.code:     lineCount := !lineCount + code.Replace("\r","").Split([| '\n' |]).Length;
      cfprintfn os "# %d \"%s\"" !lineCount output;
      
      let sizeTable = 
          if !unicode 
          then 
              let countSpecificUnicodeChars = GetSpecificUnicodeChars() |> Array.ofSeq |> Array.length
              numLowUnicodeChars + NumUnicodeCategories + 2 * countSpecificUnicodeChars + 1           
          else 256 + 1
  
      let tableTransitions = ResizeArray.init dfaNodes.Length (fun _ -> ResizeArray.init sizeTable (fun _ -> -1))
  
      cfprintfn os "let trans : uint16[] array = ";
      cfprintfn os "    [| ";
      if !unicode then 
  