test_class.declarator: THROWING_DISPOSABLE = new Subscription() {
  
          @Override
          public void cancel() {
              // break contract by throwing exception
              throw new SafeSubscriberTestException("failure from unsubscribe");
          }
  
          @Override
          public void request(long n) {
              // ignored
          }
      }
test_class.modifier: static final
test_class.original_string: static final Subscription THROWING_DISPOSABLE = new Subscription() {
  
          @Override
          public void cancel() {
              // break contract by throwing exception
              throw new SafeSubscriberTestException("failure from unsubscribe");
          }
  
          @Override
          public void request(long n) {
              // ignored
          }
      };
test_class.type: Subscription
test_class.var_name: THROWING_DISPOSABLE
test_class.file: rxjava/src/test/java/io/reactivex/subscribers/SafeSubscriberTest.java
test_class.identifier: SafeSubscriberTest
test_case.body: @Test
      public void onCompleteteNoSubscribeOnErrorCrash() {
          List<Throwable> list = TestHelper.trackPluginErrors();
  
          try {
              CrashDummy cd = new CrashDummy(false, 1, true, true, false, false);
              SafeSubscriber<Object> so = cd.toSafe();
  
              so.onComplete();
  
              TestHelper.assertError(list, 0, CompositeException.class);
              List<Throwable> ce = TestHelper.compositeList(list.get(0));
              TestHelper.assertError(ce, 0, NullPointerException.class, "Subscription not set!");
              TestHelper.assertError(ce, 1, TestException.class);
          } finally {
              RxJavaPlugins.reset();
          }
      }
test_case.class_method_signature: SafeSubscriberTest.onCompleteteNoSubscribeOnErrorCrash()
test_case.full_signature: @Test public void onCompleteteNoSubscribeOnErrorCrash()
test_case.identifier: onCompleteteNoSubscribeOnErrorCrash
test_case.invocations: trackPluginErrors toSafe onComplete assertError compositeList get assertError assertError reset
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void onCompleteteNoSubscribeOnErrorCrash()
focal_class.declarator: actual
focal_class.modifier: final
focal_class.original_string: final Subscriber<? super T> actual;
focal_class.type: Subscriber<? super T>
focal_class.var_name: actual
focal_class.declarator: s
focal_class.original_string: Subscription s;
focal_class.type: Subscription
focal_class.var_name: s
focal_class.declarator: done
focal_class.original_string: boolean done;
focal_class.type: boolean
focal_class.var_name: done
focal_class.file: rxjava/src/main/java/io/reactivex/subscribers/SafeSubscriber.java
focal_class.identifier: SafeSubscriber
focal_class.interfaces: implements FlowableSubscriber<T>, Subscription
focal_class.class_method_signature: SafeSubscriber.SafeSubscriber(Subscriber<? super T> actual)
focal_class.full_signature: public  SafeSubscriber(Subscriber<? super T> actual)
focal_class.identifier: SafeSubscriber
focal_class.modifiers: public
focal_class.parameters: (Subscriber<? super T> actual)
focal_class.signature:  SafeSubscriber(Subscriber<? super T> actual)
focal_class.class_method_signature: SafeSubscriber.onSubscribe(Subscription s)
focal_class.full_signature: @Override public void onSubscribe(Subscription s)
focal_class.identifier: onSubscribe
focal_class.modifiers: @Override public
focal_class.parameters: (Subscription s)
focal_class.return: void
focal_class.signature: void onSubscribe(Subscription s)
focal_class.class_method_signature: SafeSubscriber.onNext(T t)
focal_class.full_signature: @Override public void onNext(T t)
focal_class.identifier: onNext
focal_class.modifiers: @Override public
focal_class.parameters: (T t)
focal_class.return: void
focal_class.signature: void onNext(T t)
focal_class.class_method_signature: SafeSubscriber.onNextNoSubscription()
focal_class.full_signature:  void onNextNoSubscription()
focal_class.identifier: onNextNoSubscription
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void onNextNoSubscription()
focal_class.class_method_signature: SafeSubscriber.onError(Throwable t)
focal_class.full_signature: @Override public void onError(Throwable t)
focal_class.identifier: onError
focal_class.modifiers: @Override public
focal_class.parameters: (Throwable t)
focal_class.return: void
focal_class.signature: void onError(Throwable t)
focal_class.class_method_signature: SafeSubscriber.onComplete()
focal_class.full_signature: @Override public void onComplete()
focal_class.identifier: onComplete
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void onComplete()
focal_class.class_method_signature: SafeSubscriber.onCompleteNoSubscription()
focal_class.full_signature:  void onCompleteNoSubscription()
focal_class.identifier: onCompleteNoSubscription
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void onCompleteNoSubscription()
focal_class.class_method_signature: SafeSubscriber.request(long n)
focal_class.full_signature: @Override public void request(long n)
focal_class.identifier: request
focal_class.modifiers: @Override public
focal_class.parameters: (long n)
focal_class.return: void
focal_class.signature: void request(long n)
focal_class.class_method_signature: SafeSubscriber.cancel()
focal_class.full_signature: @Override public void cancel()
focal_class.identifier: cancel
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void cancel()
focal_method.body: @Override
      public void onComplete() {
          if (done) {
              return;
          }
          done = true;
  
          if (s == null) {
              onCompleteNoSubscription();
              return;
          }
  
  
          try {
              actual.onComplete();
          } catch (Throwable e) {
              Exceptions.throwIfFatal(e);
              RxJavaPlugins.onError(e);
          }
      }
focal_method.class_method_signature: SafeSubscriber.onComplete()
focal_method.full_signature: @Override public void onComplete()
focal_method.identifier: onComplete
focal_method.invocations: onCompleteNoSubscription onComplete throwIfFatal onError
focal_method.modifiers: @Override public
focal_method.parameters: ()
focal_method.return: void
focal_method.signature: void onComplete()