anchor.diff:          let terminalNodes = new BlockResizeArray<ExtensionTree>()
           let finalExtension = pack3ToInt64 parser.StartRule 0 inputLength
      
  -        let findFamily prod (nodes : Nodes) extension : Family =
  +        let findFamily prod (nodes : INode) extension : Family =
               let mutable result = None
               let res = ref <| dummyFam
               let exists = createdFamilies.[prod].TryGetValue(extension,res)
  
positive.code: //            family
  
          let handleIntermidiate (node : INode) prod extension =
              let nodes = new Nodes(node, null, null)
              let family = findFamily prod nodes extension
              family
  
          let containsContext index label  (gssNode : int64<vertex>) (ast : INode) =
  
negative.code:             if not (containsEdge v u ast.tree)
              then
                  let newEdge = new Edge(u, ast)
                 // edges.[gss.[getIndex2Vertex v].[getIndex1Vertex v].Level,gss.[getIndex2Vertex u].[getIndex1Vertex u].Level].Add(newEdge)
                  if setP.ContainsKey v
                  then
                      let trees = setP.[v]
                      let handleTree ast2 =
                          
                          let y = getNodeP label ast ast2
                          addContext label (getRightExtension ast2.extension) u y      ////ast2 or ast!!! temp
                      trees |> ResizeArray.iter handleTree
                  let vertex = gss.[getIndex2Vertex v].[getIndex1Vertex v]     
                  if vertex.OutEdges.first <> Unchecked.defaultof<_>
                  then
                      if vertex.OutEdges.other <> null
  