@Override
 protected final void doNext(T x) {
   if (subscription == CANCELLED) {
     throw CancelException.get();
   }
   super.doNext(x);
   doPostNext(x);
 }
 @Override
 public void cancel() {
   if (SUBSCRIPTION.getAndSet(this, CANCELLED) != CANCELLED) {
     super.cancel();
   }
 }
 protected void doSafeComplete() {
   super.doComplete();
 }
 protected void doSafeError(Throwable t) {
   super.doError(t);
 }
 protected void doSafeSubscribe(Subscription s) {
   super.doSubscribe(s);
 }