code: def FindUnspentCoinsByAssetAndTotal(self, asset_id, amount, from_addr=None, use_standard=False, watch_only_val=0, reverse=False):
          
          coins = self.FindUnspentCoinsByAsset(asset_id, from_addr=from_addr,
                                               use_standard=use_standard, watch_only_val=watch_only_val)
  
          sum = Fixed8(0)
  
          for coin in coins:
              sum = sum + coin.Output.Value
  
          if sum < amount:
              return None
  
          coins = sorted(coins, key=lambda coin: coin.Output.Value.value)
  
          if reverse:
              coins.reverse()
  
          total = Fixed8(0)
  
          # go through all coins, see if one is an exact match. then we'll use that
          for coin in coins:
              if coin.Output.Value == amount:
                  return [coin]
  
          to_ret = []
          for coin in coins:
              total = total + coin.Output.Value
              to_ret.append(coin)
              if total >= amount:
                  break
  
          return to_ret
docs: Finds unspent coin objects totalling a requested value in the wallet limited to those of a certain asset type.
  
          Args:
              asset_id (UInt256): a bytearray (len 32) representing an asset on the blockchain.
              amount (int): the amount of unspent coins that are being requested.
              from_addr (UInt160): a bytearray (len 20) representing an address.
              use_standard (bool): whether or not to only include standard contracts ( i.e not a smart contract addr ).
              watch_only_val (int): a flag ( 0 or 64 ) indicating whether or not to find coins that are in 'watch only' addresses.
  
          Returns:
              list: a list of ``neo.Wallet.Coin`` in the wallet that are not spent. this list is empty if there are not enough coins to satisfy the request.