The following code does not do what I would expect:

(with-current-buffer (get-buffer-create "*Test*")
  (erase-buffer)
  (insert "   ")
  (insert-text-button "Button1"
                      'foo 'bar)
  (insert "   ")
  (insert-text-button "Button2"
                      'foo 'bar)
  (beginning-of-buffer)
  (text-property-search-forward 'foo 'bar nil t)
  (display-buffer (current-buffer)))

I would expect the point to land on the first button. However, it lands on the second.