anchor.diff:    result:=Node;
     result^.NodeType:=ntSTAR;
    end else begin
  -  result:=NewNode(ntQUEST,Node,nil,nil,Kind);
  +  result:=NewNode(ntQUEST,Node,nil,Kind);
    end;
   end;
   
  
positive.code:    end else if ((NodeLeft^.Right^.NodeType in [ntSTAR,ntPLUS]) and (NodeRight^.NodeType in [ntSTAR,ntQUEST])) and AreNodesEqualSafe(NodeLeft^.Right^.Left,NodeRight^.Left) and (NodeLeft^.Right^.Value=0) and (NodeRight^.Value=0) then begin
      result:=NodeLeft;
     end else begin
      result:=NewNode(ntCAT,NodeLeft,NodeRight,nil,0);
     end;
    end else begin
     result:=NewNode(ntCAT,NodeLeft,NodeRight,nil,0);
    end;
   end else begin
    if assigned(NodeLeft) then begin
  
negative.code:  end;
  end;
  
  function TFLRE.NewNode(const NodeType:longint;const Left,Right:PFLRENode;const Value:longint):PFLRENode;
  begin
   GetMem(result,SizeOf(TFLRENode));
   FillChar(result^,SizeOf(TFLRENode),#0);
  