anchor.diff:             inc(StackPointer);
             end;
             opZEROWIDTH:begin
  -           Condition:=Condition or Instruction^.Value;
  +           Condition:=Condition or longword(Instruction^.Value);
              if WorkQueue.IndexOf(Instruction^.Next)>=0 then begin
               OnePassNFAReady:=false;
               break;
  
positive.code:     end;
      ntCAT:begin
       if assigned(Node^.Left) and assigned(Node^.Right) then begin
        if ((Node^.Left^.NodeType in [ntSTAR,ntPLUS,ntQUEST]) and (Node^.Right^.NodeType=ntPLUS)) and AreNodesEqual(Node^.Left^.Left,Node^.Right^.Left) then begin
         NodeEx^:=Node^.Right;
         DoContinue:=true;
         result:=true;
  
negative.code: var NodeTemp:PFLRENode;
  begin                                                    
   if assigned(NodeLeft) and assigned(NodeRight) then begin
    if (NodeLeft^.NodeType=ntZEROWIDTH) and (NodeRight^.NodeType=ntZEROWIDTH) then begin
     NodeLeft^.Value:=NodeLeft^.Value or NodeRight^.Value;
     result:=NodeLeft;
    end else if ((NodeLeft^.NodeType in [ntSTAR,ntPLUS,ntQUEST]) and (NodeRight^.NodeType=ntPLUS)) and AreNodesEqualSafe(NodeLeft^.Left,NodeRight^.Left) and (NodeLeft^.Value=0) and (NodeRight^.Value=0) then begin
     result:=NodeRight;
    end else if ((NodeLeft^.NodeType in [ntSTAR,ntPLUS]) and (NodeRight^.NodeType in [ntSTAR,ntQUEST])) and AreNodesEqualSafe(NodeLeft^.Left,NodeRight^.Left) and (NodeLeft^.Value=0) and (NodeRight^.Value=0) then begin
     result:=NodeLeft;
    end else if (NodeLeft^.NodeType=ntCAT) and assigned(NodeLeft^.Left) and assigned(NodeLeft^.Right) then begin
     if (NodeLeft^.Right^.NodeType=ntZEROWIDTH) and (NodeRight^.NodeType=ntZEROWIDTH) then begin
      NodeLeft^.Right^.NodeType:=NodeLeft^.Right^.NodeType or NodeRight^.Value;
      result:=NodeLeft;
     end else if ((NodeLeft^.Right^.NodeType in [ntSTAR,ntPLUS,ntQUEST]) and (NodeRight^.NodeType=ntPLUS)) and AreNodesEqualSafe(NodeLeft^.Right^.Left,NodeRight^.Left) and (NodeLeft^.Right^.Value=0) and (NodeRight^.Value=0) then begin
      NodeLeft^.Right:=NodeRight;
      result:=NodeLeft;
     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
  