(define (intersect pos-list1 pos-list2)
   (let loop
     ((current (first pos-list1))
      (res (new eq?)))
      (let ((current-gepeeked (peek pos-list1 current)))
        (if (find pos-list2 current-gepeeked)
            (add-after! res current-gepeeked))
        (if (has-next? pos-list1 current)
            (loop (next pos-list1 current) res)
            res))))