anchor.diff:      val Ast           : obj
       static member Equal1 (label1 : Label) (node1 : Vertex) (ast1 : obj) (label2 : Label) (node2 : Vertex) (ast2 : obj) inputLength =
           let mutable result = false
  -        if Label.Equal1 label1 label2 && Vertex.Equal node1 node2 && (*(treeCompare ast1 ast2 inputLength)*) ast1.Equals ast2 then result <- true
  +        if Label.Equal1 label1 label2 && Vertex.Equal node1 node2 && ast1.Equals ast2 then result <- true
           result
       static member Equal2 (label1 : (int*int)) (node1 : Vertex) (ast1 : obj) (label2 : Label) (node2 : Vertex) (ast2 : obj) inputLength =
           let mutable result = false
  -        if Label.Equal2 label1 label2 && Vertex.Equal node1 node2 (*(treeCompare ast1 ast2 inputLength)*) 
  +        if Label.Equal2 label1 label2 && Vertex.Equal node1 node2
           then 
               if ast1 = null && ast2 = null
               then result <- true
  
positive.code:                                 currentIndex := !currentIndex + 1
                                  currentLabel := new Label(currentLabel.Value.Rule, currentLabel.Value.Position + 1)
                                  if !currentR <> null
                                  then currentN := getNodeP !currentLabel !currentN !currentR  //нужно ли тут всегда создавать упакованную ячейку или если только правый уже есть
                                  condition := false
                          else 
                              let index = getIndex(curSymbol, curToken)
  
negative.code:             else 
                  
                  stop := true  
                                
          and processing () =  
              let getIndex(nTerm, term) = 
  