closed #3463: ListenerID is std::string now. To avoid hash collision when using lots of EventCustoms.