anchor.diff:              | :? IntermidiateNode as cur ->
                   if List.contains current been
                   then
  -                    Others(Intermidiate(cur), false, (cur.Slot, cur.Extension))
  +                    Others(Intermidiate(cur), true, (cur.Slot, cur.Extension))
                   else
  -                    been <- List.append been [cur]
                       if cur.Others = Unchecked.defaultof<_>
                       then
  -                        let res = f cur.First true
  +                        let res = f cur.First true (List.append been [cur])
                           match res with
                           | Others(_, _, _) ->
                               res
  
positive.code:                     if cur.Others <> Unchecked.defaultof<_>
                      then
                          for i in 0..cur.Others.Count - 1 do
                              let rs = f (cur.Others.Item i) false
                              match rs with
                              | Packed(pckd, is) ->
                                  if is
  
negative.code:             | :? NonTerminalNode as cur ->
                  if List.contains current been
                  then
                      Others(NonTerminal(cur), true, (cur.Name, cur.Extension))
                  else
                      let fs = f cur.First false (List.append been [cur])
                      match fs with
                      | Packed(pckd, is) ->
                          if is
  