anchor.diff:              let temp = 0
               if not (u = dummyGSSNode)
               then
  -                let vertex = gss.[getLevel u].[getLabel u]
  +                let vertex = gss.[getIndex2Vertex u].[getIndex1Vertex u]
                   let temp = new ExtensionTree(extension, z)
                   let label = vertex.Label
                   if setP.ContainsKey u           //вот тут можно попробовать какой-нибудь tryGet
  
positive.code: let inline getLeftExtension (long : int64<extension>)  = int <| ((int64 long) >>> 32)
  
  let inline packVertex level label: int64<vertex> =  LanguagePrimitives.Int64WithMeasure ((int64 level <<< 32) ||| int64 label)
  let inline getLabel (long : int64<vertex>)       = int <| ((int64 long) &&& 0xffffffffL)
  let inline getLevel (long : int64<vertex>)       = int <| ((int64 long) >>> 32)
  
  let inline packLabel rule position = (int rule <<< 16) ||| int position
  let inline getRule packedValue = int packedValue >>> 16
  
negative.code:                     value.Add(temp)
                      setP.Add(u, value)
                  let processEdge (edge : Edge) =
                      if not <| obj.ReferenceEquals(edge.Ast, dummyAST)
                      then
                          let y1 = getNodeP label edge.Ast temp
                          addContext label i edge.Dest y1
                      else addContext label i edge.Dest (new ExtensionTree(extension, z))  
                  processEdge vertex.OutEdges.first
                  if vertex.OutEdges.other <> null 
                  then vertex.OutEdges.other |> Array.iter processEdge
  