Get a language mapping specific helper object that may assist in using objects of this class in a specific lanaguage.

For instance, if asked for the helper for nsIProgrammingLanguage::JAVASCRIPT this might return an object that can be QI'd into the nsIXPCScriptable interface to assist XPConnect in supplying JavaScript specific behavior to callers of the instance object.

Add/remove |aParticipant| from the table of externally referenced participants.

Does not maintain a count, so an object should not be added when it is already in the table.

The table of externally referenced participants is a list of participants that should be marked at GC-time if they are a participant in the preserved wrapper table added with aRootWhenExternallyReferenced, whether or not they are reachable from marked participants. This should be used for participants that hold onto scripts (typically onload or onerror handlers) that can be triggered at the end of a currently-ongoing operation (typically a network request) and that could thus expose the participant to script again in the future even though it is not otherwise reachable.

The caller is responsible for ensuring that the GC participant is alive while it is in this table; the table does not own a reference.

UnsetExternallyReferenced must be called exactly once for every successful SetExternallyReferenced call, and in no other cases.