is the definition if the joinnode class.
For me it's a dirnode and not a joinnode, but yes, such things complicates matters. For dirnodes you can index out dirname, e.g. Stdio->dirname. For joinnodes you'd have to index out joined_modules and then investigate those further. (This is a reason to only have `[] and not `-> overloaded in those two classes.)
If you write code that tries to extract paths and lines from dirnodes and joinnodes I suggest you put it inside those classes, because they might be entirely rewritten at some point in the future.
right now i am stuck somewhere else. the detection of modules is currently a rather crude guess based on the token stream and i'd like to have something more reliable.
You mean .pmod vs .pike files? Looking in the objects mapping in the master should be a fairly reliable to tell whether something is a module. Strings cast to objects end up there too, but that's an uncommon thing to do (I think that should be an error instead - such quirky and unintuitive casts are just confusing).
there appears to be a difference between what _typeof() finds,
Isn't it better to use the describe_* functions in the master, or take a look at how they do it? It's probably the same functions _typeof itself is using.