anchor.diff:      (if (is-union paren-regex)
         ; union paren
         (if (not (union-ugly-p paren-regex))
  -        (let ((ret-parse (make-union paren-regex)))
  +        (let ((ret-parse (make-union paren-regex last-end-index)))
             (setf begin-index (get-ret 'begin ret-parse))
             (setf end-index   (get-ret 'end   ret-parse))
             (list begin-index end-index (+ 2 len)))
  
positive.code:                (let* ((rest-exp (subseq regex-string index))
                        (paren-exp (get-first-paren rest-exp))
                        (ret-parse nil))
                   (setf ret-parse (deal-with-paren paren-exp))
                   (setf (state-out1 (aref trans-table last-end-index))
                         (get-ret 'begin ret-parse))
                   (set-begin-end-f (get-ret 'begin ret-parse)
                                    (get-ret 'end   ret-parse))
                   (incf index (1- (get-ret 'len ret-parse)))))
  
negative.code:         ((eq 'end   key) (nth 1 parse-ret))
          ((eq 'len key) (nth 2 parse-ret))))
  
  (defun deal-with-paren (paren-regex last-end-index)
    "DEAL-WITH-PAREN
     RETURN:(lst begin-index end-index length+2)"
    (let ((begin-index nil)
  