anchor.diff:                          if cur.Others <> Unchecked.defaultof<_>
                           then
                               for i in 0..cur.Others.Count - 1 do
  -                                let rs = f (cur.Others.Item i) false
  +                                let rs = f (cur.Others.Item i) false (List.append been [cur])
                                   match rs with
                                   | Packed(pckd, is) ->
                                       if is
  
positive.code:         | Intermidiate(trt) -> trt :> INode
  
      let minimiseSppf (tree : Tree<Token>) =
          let mutable been : list<obj> = []
          let rec f (current : obj) (prevAble : bool) : ResVert =
              match current with
              | :? TerminalNode as cur ->
                  been <- List.append been [cur]
                  Others(Terminal(cur), true, (cur.Name, cur.Extension))
              | :? PackedNode as cur ->
                  if List.contains current been
                  then
                      Packed(cur, false)
                  else
                      been <- List.append been [cur]
                      let l = f cur.Left true
                      let r = f cur.Right true
                      match l, r with
                      | Others(vrtl, isl, extl), Others(vrtr, isr, extr) ->
                          if snd extl = packExtension -1 -1 || fst extl = -1 then
  
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
  