public IEnumerable<IMessagePart> Deserialize(XContainer partsContainer)
        {
            partsContainer.ThrowIfNull("partsContainer");

            foreach (XElement partElement in partsContainer.Elements())
            {
                switch (partElement.Name.LocalName)
                {
                    case "color":
                        yield return MessageColorSerializer.Instance.Deserialize(partElement);
                        break;
                    case "lineBreak":
                        yield return MessageLineBreakSerializer.Instance.Deserialize(partElement);
                        break;
                    case "question":
                        yield return MessageQuestionSerializer.Instance.Deserialize(partElement);
                        break;
                    case "text":
                        yield return MessageTextSerializer.Instance.Deserialize(partElement);
                        break;
                }
            }
        }