def FindUnspentCoins(self, from_addr=None, use_standard=False, watch_only_val=0):
        """
        Finds unspent coin objects in the wallet.

        Args:
            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.Coins`` in the wallet that are not spent.
        """
        ret = []
        for coin in self.GetCoins():
            if coin.State & CoinState.Confirmed > 0 and \
                    coin.State & CoinState.Spent == 0 and \
                    coin.State & CoinState.Locked == 0 and \
                    coin.State & CoinState.Frozen == 0 and \
                    coin.State & CoinState.WatchOnly == watch_only_val:

                do_exclude = False
                if self._vin_exclude:
                    for to_exclude in self._vin_exclude:

                        if coin.Reference.PrevIndex == to_exclude.PrevIndex and \
                                coin.Reference.PrevHash == to_exclude.PrevHash:
                            do_exclude = True

                if do_exclude:
                    continue

                if from_addr is not None:
                    if coin.Output.ScriptHash == from_addr:
                        ret.append(coin)
                elif use_standard:

                    contract = self._contracts[coin.Output.ScriptHash.ToBytes()]
                    if contract.IsStandard:
                        ret.append(coin)
                else:
                    ret.append(coin)

        return ret