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:                         notPushedPrefs.Add(pref)
  
                  for notPushedPref in notPushedPrefs do
                      if not <| commonNonterms.Any(fun ast -> nonTermsAstToPrefixes.[ast].Any(fun astPrefix -> isContainPref (Some ast) astPrefix None notPushedPref))
                      then
                          if not <| errorEdges.ContainsKey(e)
                              then
  
negative.code:         customEnqueue(startV)
          newVertex.addEdge edge
  
          (*let prefixes = gssVertexesToPrefixes.[newVertex]
          for lprefixToAdd in lprefixesToAdd do
              addPrefix prefixes lprefixToAdd
          for e in outEdgesInnerGraph.[startV.vNum] do
              addNonZeroReduction newVertex e.Tag edge startV*)
  
          if isNotEps
          then
              let prefixes = gssVertexesToPrefixes.[newVertex]
  