private Message
sendAXFR(Message query) throws IOException {
	Name qname = query.getQuestion().getName();
	ZoneTransferIn xfrin = ZoneTransferIn.newAXFR(qname, address, tsig);
	xfrin.setTimeout((int)(getTimeout() / 1000));
	xfrin.setLocalAddress(localAddress);
	try {
		xfrin.run();
	}
	catch (ZoneTransferException e) {
		throw new WireParseException(e.getMessage());
	}
	List records = xfrin.getAXFR();
	Message response = new Message(query.getHeader().getID());
	response.getHeader().setFlag(Flags.AA);
	response.getHeader().setFlag(Flags.QR);
	response.addRecord(query.getQuestion(), Section.QUESTION);
	Iterator it = records.iterator();
	while (it.hasNext())
		response.addRecord((Record)it.next(), Section.ANSWER);
	return response;
}
Asynchronously sends a message to a single server, registering a listener
to receive a callback on success or exception.  Multiple asynchronous
lookups can be performed in parallel.  Since the callback may be invoked
before the function returns, external synchronization is necessary.
@param query The query to send
@param listener The object containing the callbacks.
@return An identifier, which is also a parameter in the callback
src/main/java/core/org/xbill/DNS/SimpleResolver.java