What's the difference between set_wp_destination() and set_xy_target()

Hi everyone
In the circle controller it use the _pos_control.set_xy_target(target.x, target.y) to update position controller target, and in the waypoint controller it use wp_nav.set_wp_destination(destination, false) to set the destinate way point, what’s the difference between set_wp_destination() and set_xy_target() when it lead the copter to fly? thank you very much.