+/*
+ Protects the parameter from being garbage collected. The object is
+ protected until the next disconnect_from_context call.
+
+ Whenever a child translator hears an event, the event is added to
+ this list. This eliminates the need for derived_mark methods in most
+ translators; all incoming events are instead protected by the
+ translator group.
+
+ TODO: Should the list also be flushed at the beginning of each new
+ moment?
+ */
+void
+Translator_group::protect_event (SCM ev)
+{
+ protected_events_ = scm_cons (ev, protected_events_);