MDNode *node( MDNode *root ) { return root; } template< typename N, typename... Args > MDNode *node( N *root, int n, Args... args ) { if ( root ) return node( cast< MDNode >( root->getOperand(n) ), args... ); return nullptr; }