Returns a list of colored outputs for the specified quantity.

        :param list[SpendableOutput] unspent_outputs: The list of available outputs.
        :param bytes asset_id: The ID of the asset to collect.
        :param int asset_quantity: The asset quantity to collect.
        :return: A list of outputs, and the total asset quantity collected.
        :rtype: (list[SpendableOutput], int)

def _collect_colored_outputs(unspent_outputs, asset_id, asset_quantity):
        """
        Returns a list of colored outputs for the specified quantity.

        :param list[SpendableOutput] unspent_outputs: The list of available outputs.
        :param bytes asset_id: The ID of the asset to collect.
        :param int asset_quantity: The asset quantity to collect.
        :return: A list of outputs, and the total asset quantity collected.
        :rtype: (list[SpendableOutput], int)
        """
        total_amount = 0
        result = []
        for output in unspent_outputs:
            if output.output.asset_id == asset_id:
                result.append(output)
                total_amount += output.output.asset_quantity

            if total_amount >= asset_quantity:
                return result, total_amount

        raise InsufficientAssetQuantityError