void attachInclude(const NodePtr& node, const string& include) { node->attachValue(IncludeTag(include)); }
NodePtr markAsDerived(const NodePtr& node, const string& name) { node->attachValue(DerivedTag(name)); return node; }
void attachError(const NodePtr& node, const string& msg) { node->attachValue(ErrorTag(msg)); }