anchor.diff:          |Some old -> oldAst
           |None -> Some newAst
   
  -    let rec isContainPref (ast:AstNode option) (curAstPrefix:LabledPrefix<_>) (findAst:AstNode option) (findPrefix:LabledPrefix<_>) =    //to do
  -        if curAstPrefix = findPrefix
  +    let rec isContainPref (ast:AstNode option) (curAstPrefix:LabledPrefix<_>) (wasAstStarts:ResizeArray<AstNode> option) (findAst:AstNode option) (findPrefix:LabledPrefix<_>) (wasFindStarts:ResizeArray<AstNode> option) =    //to do
  +        if curAstPrefix = findPrefix    //bad compare
           then
               true
           else
  
positive.code:             for napref in notAccPrefs do
                  if not <| accPrefs.Contains(napref)
                  then
                      if not <| accNonterms.Any(fun ast -> nonTermsAstToPrefixes.[ast].Any(fun astPrefix -> isContainPref (Some ast) astPrefix None napref))
                      then
                          errorEdges.Add(e, new ResizeArray<_>())
                          addPrefix errorEdges.[e] napref
  
          buildErrors errorEdges
  
  
negative.code:                         notPushedPrefs.Add(pref)
  
                  for notPushedPref in notPushedPrefs do
                      if not <| commonNonterms.Any(fun ast -> nonTermsAstToPrefixes.[ast].Any(fun astPrefix -> 
                                                                                                              let wasAst = new ResizeArray<_>()
                                                                                                              wasAst.Add(ast)
                                                                                                              isContainPref (Some ast) astPrefix (Some wasAst) None notPushedPref None))
                      then
                          if not <| errorEdges.ContainsKey(e)
                              then
  