anchor.diff:                      nonTerminalNodes.[nTerm] <- d
                       num
               else
  -                if intermidiateNodes.ContainsKey(ext)
  -                then
  -                    let d1 = intermidiateNodes.[ext]
  -                    if d1.ContainsKey(label)
  +                let contains, d1 = intermidiateNodes.TryGetValue ext
  +                if contains
  +                then
  +                    let contains, d2 = d1.TryGetValue label
  +                    if contains
                       then
  -                        d1.[label]
  +                        d2
                       else
                           let newNode = new IntermidiateNode(int label, ext)
                           sppfNodes.Add(newNode)
  
positive.code:             let k = getRightExtension rightExtension
              let rule = getRule label
              let d =
                  if packedNodes.ContainsKey(i)
                  then
                      let d1 = packedNodes.[i]
                      if d1.ContainsKey(j)
                      then
                          let d2 = d1.[j]
                          if d2.ContainsKey(k)
                          then
                              d2.[k]
                          else
                              let d3 = new Dictionary<int<labelMeasure>, int<nodeMeasure>>()
                              d2.Add(k, d3)
  
negative.code:                     d1.Add(j, d2)
                      packedNodes.Add(i, d1)
                      d3
              let contains, d1 = d.TryGetValue label
              if contains
              then
                  d1 
              else 
                  let newNode = new PackedNode(rule, left, right)
                  sppfNodes.Add(newNode)
  