What's the overhead of evaluating id->first_node("Identity") twice?  Worth storing in a local variable?