void Item::extractVariablesExcept( VariableSet &vs, const std::set<std::string> &vl ) const { ItemPtr i = getParent(); if ( i ) i->extractVariablesExcept( vs, vl ); for ( auto x = myVariables.begin(); x != myVariables.end(); ++x ) { if ( vl.find( x->first ) == vl.end() ) vs.emplace( std::make_pair( x->first, x->second ) ); } }