anchor.diff:                      (
                           fun i ->
                               let pos = 
  -                                if i.Positions.Length = 0 then None else Some i.Positions.[0] 
  +                                if i.Positions.Count = 0 then None else Some i.Positions.[0] 
                                   |> newPos
                               new StateInfo<_,'br>((match stt.PreviousV with | Some x -> x | None -> i.StartV)
  -                            , ch :: i.AccumulatedString
  -                            , pos :: i.Positions)
  +                            , ResizeArray.concat [i.AccumulatedString; ResizeArray.singleton ch]
  +                            , ResizeArray.concat [ResizeArray.singleton pos; i.Positions])
                       )
               else 
                   new StateInfo<_,'br>((match stt.PreviousV with | Some x -> x | None -> edg.Source)
  -                , [ch]
  -                , [newPos (Some lexbuf.CurrentPos)])
  +                , ResizeArray.singleton ch
  +                , ResizeArray.singleton (newPos (Some lexbuf.CurrentPos)))
                   |> ResizeArray.singleton
   
           let processToken onAccept (p: StateInfo<_,_>) =
  -            let s = (new string(p.AccumulatedString |> Array.ofList |> Array.rev))
  -            actions onAccept s (p.Positions |> Array.ofSeq |> Array.rev)                          
  +            let s = (new string(p.AccumulatedString |> Array.ofSeq))
  +            actions onAccept (new string(p.AccumulatedString |> Array.ofSeq)) (p.Positions |> Array.ofSeq |> Array.rev)                          
   
           let processEdg (edg:LexerEdge<_,_>) stt reduced =
               let acc = new ResizeArray<_>(10) 
  
positive.code:                 | _ ->
                      {
                          pos_fname = ""
                          pos_lnum = 0 
                          pos_bol = 0
                          pos_cnum = 0
                          back_ref = edg.BackRef.Value
  
negative.code:         res
  
      static member Create(trans, accept) = new UnicodeTables(trans, accept)
  
  //    let query = "select \" f , " + (if x < 2 then "x" else "y") + "from z"
  //    let DB = new MS_DB("")
  //    let res = DB.exec query
  //    res |> Seq.iter (printfn "%A")