anchor.diff:      |> 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
  +    let gss, _, _ = parse parser input false
       getAllRangesForState gss parser.StartState
   
   let getAllRangesForStateWithLength gss state =
  
positive.code:     |> Seq.filter (fun v -> v.Nonterm = state)
  
  let buildAst (parser : ParserSourceGLL) (input : IParserInput) = 
      let gss, tree = parse parser input true
      let tree = if tree.IsNone
                  then failwith "NotParsed"
                  else tree.Value
      tree
          
  let isParsed (parser : ParserSourceGLL) (input : LinearInput) = 
      let gss, _ = parse parser input false
      findVertices gss parser.StartState
      |> Seq.exists (fun v -> v.P.SetP |> ResizeArray.exists (fun p -> int p.posInInput = input.Input.Length))
  
  
negative.code:                    //pushContext nextPosInInput nextPosInGrammar currentContext.GssVertex (currentContext.Length + 1us)
              )
  
      gss, sppf,
          if buildTree
          then 
              Some <| new Tree<_>(sppf.GetRoots gss input.InitialPositions.[0], input.PositionToString)
  