code: function(objJoint, arrChainsOfRecipientPrivateElements, arrChainsOfCosignerPrivateElements){
  						network.broadcastJoint(objJoint);
  						if (!arrChainsOfRecipientPrivateElements){ // send notification about public payment
  							if (recipient_device_address)
  								walletGeneral.sendPaymentNotification(recipient_device_address, objJoint.unit.unit);
  							if (recipient_device_addresses)
  								recipient_device_addresses.forEach(function(r_device_address){
  									walletGeneral.sendPaymentNotification(r_device_address, objJoint.unit.unit);
  								});
  						}
  
  						if (Object.keys(assocPaymentsByEmail).length) { // need to send emails
  							var sent = 0;
  							for (var email in assocPaymentsByEmail) {
  								var objPayment = assocPaymentsByEmail[email];
  								sendTextcoinEmail(email, opts.email_subject, objPayment.amount, objPayment.asset, objPayment.mnemonic);
  								if (++sent == Object.keys(assocPaymentsByEmail).length)
  									handleResult(null, objJoint.unit.unit, assocMnemonics);
  							}
  						} else {
  							handleResult(null, objJoint.unit.unit, assocMnemonics);
  						}
  					}
docs: for asset payments, 2nd argument is array of chains of private elements for base asset, 2nd argument is assocPrivatePayloads which is null