void OnPrivateChatMessage(Message msg)
{
var chat = Session.GetChat(msg.From, ChatType.Person, this) as PersonChatModel;
bool isNew = false;
if (chat == null) {
// in case full jid doesn't have a chat window, use bare jid
chat = GetOrCreatePersonChat(msg.From.Bare, out isNew);
}
if (msg.Nickname != null) {
ProcessNickname(GetOrCreateContact(msg.From, msg.Nickname.Value), msg.Nickname);
}
var message = CreatePrivateChatMessage(chat.Person, msg);
AddMessageToChatIfNotFiltered(message, chat, isNew);
OnMessageReceived(
new MessageEventArgs(chat, message, msg.From, null)
);
}