class MmiReceiver implements ITypedReceiver {

    @Override
    public void receiveObject(final Object object, final Message msg) {
        // bugfix
        // Java uses the system classloader when being invoked from JNI.
        // Thereby, it forgets about all the stuff it knew before.
        final ClassLoader loader = getClass().getClassLoader();
        Thread.currentThread().setContextClassLoader(loader);

        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("received '" + object + "'");
        }
        final LifeCycleEvent event;
        try {
            event = convertToLifeCycleEvent(object);
        } catch (SAXException | IOException | TransformerException
                | ParserConfigurationException e) {
            LOGGER.error(e.getMessage(), e);
            return;
        }

        // Notify all listeners about the event
        final Mmi mmi = new Mmi();
        mmi.setLifeCycleEvent(event);
        final DecoratedMMIEvent docatedEvent = new DecoratedMMIEvent(sourceUrl,
                mmi);
        final CallMetadata data = new CallMetadata();
        data.setProtocolName("umundo");
        synchronized (listeners) {
            for (MMIEventListener listener : listeners) {
                listener.receivedEvent(docatedEvent, data);
            }
        }
    }

    public  MmiReceiver(final String source);

}