'Create a L{dns.Message}.
The L{dns.Message} constructor doesn\'t accept C{queries}, C{answers},
C{authority}, C{additional} arguments, so we extract them from the
kwargs supplied to this factory function and assign them to the message.
@param args: Positional arguments.
@param kwargs: Keyword arguments.
@return: A L{dns.Message} instance.'

def messageFactory(self, *args, **kwargs):

    queries = kwargs.pop('queries', [])
    answers = kwargs.pop('answers', [])
    authority = kwargs.pop('authority', [])
    additional = kwargs.pop('additional', [])
    m = dns.Message(**kwargs)
    if queries:
        m.queries = queries
    if answers:
        m.answers = answers
    if authority:
        m.authority = authority
    if additional:
        m.additional = additional
    return m
