anchor.diff:                     //pushContext nextPosInInput nextPosInGrammar currentContext.GssVertex (currentContext.Length + 1us)
               )
   
  -    gss, 
  +    gss, sppf,
           if buildTree
           then 
               Some <| new Tree<_>(sppf.GetRoots gss input.InitialPositions.[0], input.PositionToString)
  
positive.code:     |> Seq.collect (fun v -> v.U |> Seq.collect (fun kvp -> kvp.Value |> Seq.map (fun x -> v.PositionInInput, v.GetUncompressetPositions kvp.Key |> fst, match x with Length x -> x | TreeNode _ -> failwith "Impossible!")))
  
  let getAllRangesForStartStateWithLength (parser : ParserSourceGLL) (input : IParserInput) = 
      let gss, _ = parse parser input false
      getAllRangesForStateWithLength gss parser.StartState
negative.code:     |> Seq.collect (fun v -> v.U |> Seq.collect (fun kvp -> kvp.Value |> Seq.map (fun x -> v.PositionInInput, v.GetUncompressetPositions kvp.Key |> fst)))    
  
  let getAllRangesForStartState (parser : ParserSourceGLL) (input : IParserInput) = 
      let gss, _, _ = parse parser input false
      getAllRangesForState gss parser.StartState
  
  let getAllRangesForStateWithLength gss state =
  