public void add(Message message) { if (message == null) throw new NullPointerException("Message must not be null"); if (size == max) throw new QueueFullException("Queue reached max size: " + max); boolean increment = true; if (message instanceof RealtimeMessage) { increment = !realtimeQueue.addRemoves(message); } else if (message instanceof PriorityMessage) { priorityQueue.add(message); } else if (message instanceof OrderedMessage) { orderedQueue.add(message); } else { basicQueue.add(message); } if (increment) size++; total++; }