+{
+#ifdef DEBUG
+ if(!s.empty())
+ tag_names.insert(make_pair(*this, s));
+#endif
+}
+
+string Tag::str() const
+{
+#ifdef DEBUG
+ map<Tag, string>::const_iterator i=tag_names.find(*this);
+ if(i!=tag_names.end())
+ return i->second;
+#endif
+ return format("Tag(%d)", id);
+}
+
+void operator<<(LexicalConverter &conv, Tag tag)
+{
+ conv.result(tag.str());
+}