/** * Tries to emit a NotificationLite value as the first * value and drains the queue as long as possible. * @param n the NotificationLite value * @param nl the type-appropriate notification lite object */ protected void emitFirst(Object n, final NotificationLite<T> nl) { synchronized (this) { if (!first || emitting) { return; } first = false; emitting = n != null; } if (n != null) { emitLoop(null, n, nl); } } /**