<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def issue(self, issuance_spec, metadata, fees):
 """ Creates a transaction for issuing an asset. :param TransferParameters issuance_spec: The parameters of the issuance. :param bytes metadata: The metadata to be embedded in the transaction. :param int fees: The fees to include in the transaction. :return: An unsigned transaction for issuing an asset. :rtype: CTransaction """

        inputs, total_amount = self._collect_uncolored_outputs(
            issuance_spec.unspent_outputs, 2 * self._dust_amount + fees)

        return bitcoin.core.CTransaction(
            vin=[bitcoin.core.CTxIn(item.out_point, item.output.script) for item in inputs],
            vout=[
                self._get_colored_output(issuance_spec.to_script),
                self._get_marker_output([issuance_spec.amount], metadata),
                self._get_uncolored_output(issuance_spec.change_script, total_amount - self._dust_amount - fees)
            ]
        )