I see it as a definite feature that only [] is overloaded in dir- and joinnodes, so that -> is free to access the functions and stuff in the objects themselves. It's not bad to have those two different uses well separated. I'd do it that way too if I were to write some kind of intelligent mapping-lookalike-thingy.