anchor.diff:      member this.FindSppfNode (t : TypeOfNode) lExt rExt : int<nodeMeasure> =
           match t with 
           | Nonterm state ->
  -            let key = hashNonterm lExt rExt (int state)
  -            let contains, n = this.NonTerminalNodes.TryGetValue key
  +            let newNode = new NonTerminalNode(state, (packExtension lExt rExt))
  +            //let key = hashNonterm lExt rExt (int state)
  +            let contains, n = this.NonTerminalNodes.TryGetValue newNode
               if not contains
               then
  -                let newNode = new NonTerminalNode(state, (packExtension lExt rExt))
                   this.Nodes.Add(newNode)
                   let num = (this.Nodes.Length - 1)*1<nodeMeasure>
  -                this.NonTerminalNodes.Add(key, num)
  +                this.NonTerminalNodes.Add(newNode, num)
                   num
               else n
           | Intermed state -> 
  -            let key = hashIntermed lExt rExt (int state)
  -            let contains, n = this.IntermidiateNodes.TryGetValue key
  +            let newNode = new IntermidiateNode(state, (packExtension lExt rExt))
  +            //let key = hashIntermed lExt rExt (int state)
  +            let contains, n = this.IntermidiateNodes.TryGetValue newNode
               if not contains
               then
  -                let newNode = new IntermidiateNode(state, (packExtension lExt rExt))
                   this.Nodes.Add(newNode)
                   let num = (this.Nodes.Length - 1)*1<nodeMeasure>
  -                this.IntermidiateNodes.Add(key, num)
  +                this.IntermidiateNodes.Add(newNode, num)
                   num  
               else n
   
  
positive.code:         * (lengthOfInput + 1)
          + z * (lengthOfInput + 1)
          + w
      let dummyNode = -1<nodeMeasure>
      let dummyAST = new TerminalNode(-1<token>, packExtension -1 -1)
      let epsilon = -1<token>
  
negative.code:     
  
      member this.GetNodeT (symbol : int<token>) (pos : int<positionInInput>) (nextPos : int<positionInInput>) =
          //let index = int pos + 1
          if symbol = epsilon
          then
              let t = new EpsilonNode(packExtension pos pos)
              let contains, v = this.EpsilonNodes.TryGetValue t
              if not contains
              then
                  let res = this.Nodes.Length *1<nodeMeasure>
                  this.Nodes.Add t
                  this.EpsilonNodes.Add(t, res)
                  TreeNode(res)
              else
                  TreeNode(v)
          else
              let t = new TerminalNode(symbol, packExtension pos nextPos)
              let contains, v = this.TerminalNodes.TryGetValue t
              if not contains
              then
                  let res = this.Nodes.Length *1<nodeMeasure>
                  this.Nodes.Add t
                  this.TerminalNodes.Add(t, res)
                  TreeNode(res)
              else
                  TreeNode(v)
      
      member this.GetNodeP (state : int<positionInGrammar>) (t : TypeOfNode) currentN currentR = 
          let currR = this.Nodes.Item (int currentR)
  