class MessageQueue<T> {
private T[] buffer = null;
private int size = 0;
public synchronized T pop() {
final T obj = size == 0 ? null : buffer [0];
if (size > 0 && obj != null)
buffer = Util.redim(–size, buffer, (Class<T>) obj.getClass());
return obj;
}
public synchronized void push(final T obj) {
if (size + 1 > (buffer == null ? 0 : buffer.length))
buffer = Util.redim(size + 1, buffer, (Class<T>) obj.getClass());
buffer[size++] = obj;
}
}