boolean done = ACKING.equals(state);
//NOTE! it is NOT Nacking, it is keeping - don't say NACKing - it is misleading (nack means cancel)
log.trace(this + " is " + (done ? "ACKing" : "Keeping") + " message " + ref);
Message m = ref.getMessage();
SimpleDelivery delivery = new SimpleDelivery(observer, ref, done);
messages.add(new Object[] {m, done ? null : delivery});
if (immediateAsynchronousAcknowledgment)