anchor.diff:                  else ast.other <- Array.append ast.other [|newFamily|]
           | Some _ -> ()
   
  -    let rec addToNonTermEnds (curLevel:ResizeArray<LabledPrefix<_>>) (ast:AstNode) (tailLPrefixes:ResizeArray<LabledPrefix<_>>) (was:ResizeArray<ResizeArray<LabledPrefix<_>>>) =   //to do
  -        //dfs, was array
  +    let rec addToNonTermEnds (curLevel:ResizeArray<LabledPrefix<_>>) (ast:AstNode) (tailLPrefixes:ResizeArray<LabledPrefix<_>>) (was:ResizeArray<ResizeArray<LabledPrefix<_>>>) =
           was.Add(curLevel)
           for curLPrefix in curLevel do
               match curLPrefix with
  
positive.code:             for tailLPrefix in tailLPrefixes do
                  if not <| curLevel.Contains(tailLPrefix)
                  then
                      curLevel.Add(tailLPrefix)       //addPrefix function?
  
          
  
  
negative.code:                     |None ->
                          true
                  |(NontermStart (newAst, newAstPrefixes), End) ->
                      false
                  |(NontermEnd (newAst, newAstPrefixes), Pref findPref) ->
                      match ast with
                      |Some xast ->
  