How does the built-in debugger decide which definition to highlight in the notebook when Break on messages" is enabled?

Here's an example to illustrate what I mean.  First, enable the debugger (Evaluation -> Debugger), then define a function that issues a message:

    f::boo:="Boo!!!";
    f[]:=Module[{a,b,c,d},
      a=1;
      b=a;
      Message[f::boo];
      c=b;
      d=c;
      a+b+c+d
    ]

When running `f[]`, evaluation will pause on the message and the point where the break occurred will be highlighted:

<img src="https://i.sstatic.net/Wq2L0.png" width="548">

Now let's re-assign its own DownValues to `f`, and re-run it.  Now this second definition will be highlighted, but not the original one.

<img src="https://i.sstatic.net/55y9R.png" width="550">

**The question:** How does the debugger know what to highlight and can we influence this somehow?  I would like the definition printed by [this spelunking tool][1] to be highlighted, if possible.


  [1]: http://mathematica.stackexchange.com/q/1742/12