'This method is called when a network message is received.
This will call::
self.perspective_%(message)s(*broker.unserialize(args),
**broker.unserialize(kw))
to handle the method; subclasses of Avatar are expected to
implement methods using this naming convention.'

def perspectiveMessageReceived(self, broker, message, args, kw):

    args = broker.unserialize(args, self)
    kw = broker.unserialize(kw, self)
    method = getattr(self, ('perspective_%s' % message))
    try:
        state = method(*args, **kw)
    except TypeError:
        log.msg(("%s    didn't    accept    %s    and    %s" % (method, args, kw)))
        raise
    return broker.serialize(state, self, method, args, kw)
