def Query(self):
        """
        Query the smart contract for its token information (name, symbol, decimals).

        Args:
            wallet (neo.Wallets.Wallet): a wallet instance.

        Returns:
            None: if the NEP5Token instance `Name` is already set.
            True: if all information was retrieved.
            False: if information retrieval failed.
        """
        if self.name is not None:
            # don't query twice
            return

        sb = ScriptBuilder()
        sb.EmitAppCallWithOperation(self.ScriptHash, 'name')
        sb.EmitAppCallWithOperation(self.ScriptHash, 'symbol')
        sb.EmitAppCallWithOperation(self.ScriptHash, 'decimals')

        engine = None
        try:
            engine = ApplicationEngine.Run(sb.ToArray(), exit_on_error=True, gas=Fixed8.FromDecimal(10.0), test_mode=False)
        except Exception as e:
            pass

        if engine and len(engine.ResultStack.Items) == 3:
            results = engine.ResultStack.Items

            try:
                self.name = results[0].GetString()
                self.symbol = results[1].GetString()
                self.decimals = results[2].GetBigInteger()
                if len(self.name) > 1 and self.name != 'Stack Item' \
                        and len(self.symbol) > 1 and self.symbol != 'Stack Item' \
                        and self.decimals < 10:
                    return True
            except Exception as e:
                pass
        return False
Query the smart contract for its token information (name, symbol, decimals).

        Args:
            wallet (neo.Wallets.Wallet): a wallet instance.

        Returns:
            None: if the NEP5Token instance `Name` is already set.
            True: if all information was retrieved.
            False: if information retrieval failed.