anchor.diff:  
           let nonTerminalNodes = new SysDict<int64,int<nodeMeasure>>()        
           let intermidiateNodes = new CompressedArray<_>(input.ChainLength, (fun _ -> new CompressedArray<_>(input.ChainLength, fun _ -> Unchecked.defaultof<SysDict<int<labelMeasure>, int<nodeMeasure>>>)))
  -        let edges = new CompressedArray<_>(input.ChainLength, (fun _ -> Array.zeroCreate<SysDict<int<nodeMeasure>, SysDict<int, ResizeArray<int>>>> slots.Count))
  +        //let edges = new CompressedArray<_>(input.ChainLength, (fun _ -> Array.zeroCreate<SysDict<int<nodeMeasure>, SysDict<int, ResizeArray<int>>>> slots.Count))
  +        let edges = Array.init slots.Count (fun _ -> new CompressedArray<_> (input.ChainLength, (fun _ -> null)))
           let terminalNodes = new CompressedArray<_>(input.ChainLength, (fun _ -> 0 * 1<nodeMeasure> ))
           let currentGSSNode = ref <| dummyGSSNode
           for v in input.InitialVertices do
  
positive.code:                         let cE = CommonFuns.getLeft32 !currentIndex
                          let cP = CommonFuns.getRight32 !currentIndex
                          let chainLen = input.ChainLength.[cE]
                          if cP < chainLen
                          then
                              let curToken = input.Edges.[cE].Tokens.[cP]
                              let index = getIndex curSymbol curToken
  
negative.code:                                     if curSymbol = input.Edges.[oe].Tokens.[0] then
                                          res <- Some oe  
                                  res
                              
                              match curEdge with
                              | Some edge ->
                                  currentIndex := (pack2to32 curEdge.Value 0)
                                  let curToken = input.Edges.[edge].Tokens.[0]
                                  if !structures.CurrentN = structures.Dummy
                                  then structures.CurrentN := getNodeT !currentIndex
  