def _createBasicMessage(cls, store, impl, source):
    """
        Create a message from an IMessageData provider but do not assign it any
        statuses.  Used for implementations of other createXXX class methods.

        @param store: the store to create the new message in.

        @param impl: an L{IMessageData} provider.

        @param source: a unicode string naming the source of this message.
        """
    self = cls(store=store)
    self._associateWithImplementation(impl, source)
    return self
