def METHOD_NAME(vref, d):
    data = d["data"]
    if data["type"] == "deliver":
        kd = data["kd"]
        vd = data["vd"]
        if kd[0] == "message":
            vtarget = vd[1]
            ktarget = kd[1]
            method = json.loads(kd[2]["methargs"]["body"])[0]
            kresult = kd[2].get("result")
            vresult = vd[2].get("result")
            iface = get_iface(vref, vd[2]["methargs"])
            return "d.deliver %s/%s.%s() -> r=%s/%s %s" % (vtarget, ktarget, method, vresult, kresult, iface)
        if kd[0] == "notify":
            vpids = ",".join([res[0] for res in vd[1]])
            kpids = ",".join([res[0] for res in kd[1]])
            iface = get_iface(vref, [res[2] for res in vd[1] if vref in res[2]["slots"]][0])
            return "d.notify %s/%s %s" % (vpids, kpids, iface)
    if data["type"] == "syscall":
        ksc = data["ksc"]
        vsc = data["vsc"]
        if ksc[0] == "send":
            ktarget = ksc[1]
            vtarget = vsc[1]
            method = json.loads(ksc[2]["methargs"]["body"])[0]
            iface = get_iface(vref, vsc[2]["methargs"])
            kresult = ksc[2].get("result")
            vresult = vsc[2].get("result")
            return "s.send %s/%s.%s() -> r=%s/%s %s" % (vtarget, ktarget, method, vresult, kresult, iface)
        if ksc[0] == "resolve":
            vpids = ",".join([res[0] for res in vsc[1]])
            kpids = ",".join([res[0] for res in ksc[2]])
            iface = get_iface(vref, [res[2] for res in vsc[1] if vref in res[2]["slots"]][0])
            return "s.resolve %s/%s %s" % (vpids, kpids, iface)
    return "?"