yeah just wanted to clear something, each utxo has to be signed on, and that reveals the public key, the specification of where they go is defined by the out points
in the transaction there is inpoints, which are the address that is spent to, and outpoints, which is where you are sending them... if you have had two payments go to an address, you can spend those with one signature that authorises that address balance to move
so if you are spending a larger amount, you will often have several signatures to create, and usually all but one will be going to one destination, by joining utxo's to spend them into one new balance at a new addresn, so yeah they can be split and joined, and from the point of view of an observer, it can be unclear which is change and which is payment, also, this is one of the core problems with chain analysis, because a better design of transaction can defeat any notion of which is payment and which is change, in fact, for example you could conceivably ask someone to give you 3 addresses to send to, and make 4 of your own change addresses, and who's gonna know which is which?
this is a neat thing you can do with Bitcoin Core also, in the settings enable coin control and you can be selective about everything, including, if you create several of your own change addresses manually, make it entnirely impossible to determine what is "spending" and what is not.