}
public void transfer_ownership_to(EInternalPID new_owner, EObject transfer_data) throws Pausable {
EInternalPID former_owner = owner_pid();
System.err.println("DB| transfer ownership of "+tid+" from "+former_owner+" to "+new_owner+" with tag "+transfer_data);
EProc new_owner_task;
if ((new_owner_task = new_owner.task()) != null) {
//System.err.println("received exit from owner "+former_owner
// +" => transfer to "+new_owner_task);
ETuple msg = ETuple.make(EAtom.intern("ETS-TRANSFER"),
this.is_named ? this.aname : this.tid,
former_owner,
transfer_data);
this.owner = new WeakReference<EProc>(new_owner_task);
new_owner_task.add_exit_hook(this);
former_owner.remove_exit_hook(this);
new_owner.send(former_owner, msg);
} else {
delete();