+ virtual ModePair ModeSet(User* source, User* dest, Channel* channel, const std::string ¶meter);
+
+ /**
+ * When a MODETYPE_USER mode handler is being removed, the server will call this method for every user on the server.
+ * Your mode handler should remove its user mode from the user by sending the appropriate server modes using
+ * InspIRCd::SendMode(). The default implementation of this method can remove simple modes which have no parameters,
+ * and can be used when your mode is of this type, otherwise you must implement a more advanced version of it to remove
+ * your mode properly from each user.
+ * @param user The user which the server wants to remove your mode from
+ */
+ virtual void RemoveMode(User* user);
+
+ /**
+ * When a MODETYPE_CHANNEL mode handler is being removed, the server will call this method for every channel on the server.
+ * Your mode handler should remove its user mode from the channel by sending the appropriate server modes using
+ * InspIRCd::SendMode(). The default implementation of this method can remove simple modes which have no parameters,
+ * and can be used when your mode is of this type, otherwise you must implement a more advanced version of it to remove
+ * your mode properly from each channel. Note that in the case of listmodes, you should remove the entire list of items.
+ * @param channel The channel which the server wants to remove your mode from
+ */
+ virtual void RemoveMode(Channel* channel);