Upsert, move edges to another predicate

How can I transfer edges from one predicate to another predicate using upsert?

for example

upsert{
    query{
        tree as q(uid(uid_a, uid_b))
        {
           parent_uid as parent_tree
        }
    }
   
    mutation{
         set{
               uid(tree) <new_predicate> uid(parent_uid)
         }
    }

}

Schema for parent tree is
parent_tree [uid] @reverse

the desired effect is that for each node uid_a
take the parent_tree uids and transfer them into uid_a 's new_predicate

However, when I ran the above upsert, it actually takes both the parent_uid of uid_a and uid_b and insert them to both uid_a’s and uid_b’s new_predicate

so instead of
uid_a <new_predicate> [ only uid_a’s original parent_tree uid ]

I get

uid_a <new_predicaate> [ uid_a’s original parent_tree uid AND uid_b’s original_parent_tree uid ]

is there anyway to do for each node?

I don’t think thats possible. So I had created this issue

Share there your thoughts and use cases.

Cheers.