def METHOD_NAME(self):
    self.log.info("hook into the coin_selection tracepoints")
    ctx = USDT(pid=self.nodes[0].process.pid)
    ctx.enable_probe(probe="coin_selection:selected_coins", fn_name="trace_selected_coins")
    ctx.enable_probe(probe="coin_selection:normal_create_tx_internal", fn_name="trace_normal_create_tx")
    ctx.enable_probe(probe="coin_selection:attempting_aps_create_tx", fn_name="trace_attempt_aps")
    ctx.enable_probe(probe="coin_selection:aps_create_tx_internal", fn_name="trace_aps_create_tx")
    self.bpf = BPF(text=coinselection_tracepoints_program, usdt_contexts=[ctx], debug=0)
    self.log.info("Prepare wallets")
    self.generate(self.nodes[0], 101)
    wallet = self.nodes[0].get_wallet_rpc(self.default_wallet_name)
    self.log.info("Sending a transaction should result in all tracepoints")
    # We should have 5 tracepoints in the order:
    # 1. selected_coins (type 1)
    # 2. normal_create_tx_internal (type 2)
    # 3. attempting_aps_create_tx (type 3)
    # 4. selected_coins (type 1)
    # 5. aps_create_tx_internal (type 4)
    wallet.sendtoaddress(wallet.getnewaddress(), 10)
    events = self.get_tracepoints([1, 2, 3, 1, 4])
    success, use_aps, algo, waste, change_pos = self.determine_selection_from_usdt(events)
    assert_equal(success, True)
    assert_greater_than(change_pos, -1)
    self.log.info("Failing to fund results in 1 tracepoint")
    # We should have 1 tracepoints in the order
    # 1. normal_create_tx_internal (type 2)
    assert_raises_rpc_error(-6, "Insufficient funds", wallet.sendtoaddress, wallet.getnewaddress(), 102 * 50)
    events = self.get_tracepoints([2])
    success, use_aps, algo, waste, change_pos = self.determine_selection_from_usdt(events)
    assert_equal(success, False)
    self.log.info("Explicitly enabling APS results in 2 tracepoints")
    # We should have 2 tracepoints in the order
    # 1. selected_coins (type 1)
    # 2. normal_create_tx_internal (type 2)
    wallet.setwalletflag("avoid_reuse")
    wallet.sendtoaddress(address=wallet.getnewaddress(), amount=10, avoid_reuse=True)
    events = self.get_tracepoints([1, 2])
    success, use_aps, algo, waste, change_pos = self.determine_selection_from_usdt(events)
    assert_equal(success, True)
    assert_equal(use_aps, None)
    self.bpf.cleanup()