'For the given person object, return the conversation window or create
and return a new conversation window if one does not exist.
@type person: L{IPerson<interfaces.IPerson>} provider
@param person: The person whose conversation window we want to get.
@type Class: L{IConversation<interfaces.IConversation>} implementor
@param: The kind of conversation window we want. If the conversation
window for this person didn\'t already exist, create one of this type.
@type stayHidden: C{bool}
@param stayHidden: Whether or not the conversation window should stay
hidden.
@rtype: L{IConversation<interfaces.IConversation>} provider
@return: The conversation window.'

def getConversation(self, person, Class=Conversation, stayHidden=False):

    conv = self.conversations.get(person)
    if (not conv):
        conv = Class(person, self)
        self.conversations[person] = conv
    if stayHidden:
        conv.hide()
    else:
        conv.show()
    return conv
