test_class.declarator: count
test_class.modifier: volatile
test_class.original_string: volatile int count;
test_class.type: int
test_class.var_name: count
test_class.file: rxjava/src/test/java/io/reactivex/internal/operators/completable/CompletableCacheTest.java
test_class.identifier: CompletableCacheTest
test_class.interfaces: implements Consumer<Object>, Action
test_case.body: @Test
      public void crossDispose() {
          PublishSubject<Integer> ps = PublishSubject.create();
  
          final TestObserver<Void> to1 = new TestObserver<Void>();
  
          final TestObserver<Void> to2 = new TestObserver<Void>() {
              @Override
              public void onComplete() {
                  super.onComplete();
                  to1.cancel();
              }
          };
  
          Completable c = ps.ignoreElements().cache();
  
          c.subscribe(to2);
          c.subscribe(to1);
  
          ps.onComplete();
  
          to1.assertEmpty();
          to2.assertResult();
      }
test_case.class_method_signature: CompletableCacheTest.crossDispose()
test_case.full_signature: @Test public void crossDispose()
test_case.identifier: crossDispose
test_case.invocations: create onComplete cancel cache ignoreElements subscribe subscribe onComplete assertEmpty assertResult
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void crossDispose()
focal_class.declarator: EMPTY = new InnerCompletableCache[0]
focal_class.modifier: static final
focal_class.original_string: static final InnerCompletableCache[] EMPTY = new InnerCompletableCache[0];
focal_class.type: InnerCompletableCache[]
focal_class.var_name: EMPTY
focal_class.declarator: TERMINATED = new InnerCompletableCache[0]
focal_class.modifier: static final
focal_class.original_string: static final InnerCompletableCache[] TERMINATED = new InnerCompletableCache[0];
focal_class.type: InnerCompletableCache[]
focal_class.var_name: TERMINATED
focal_class.declarator: source
focal_class.modifier: final
focal_class.original_string: final CompletableSource source;
focal_class.type: CompletableSource
focal_class.var_name: source
focal_class.declarator: observers
focal_class.modifier: final
focal_class.original_string: final AtomicReference<InnerCompletableCache[]> observers;
focal_class.type: AtomicReference<InnerCompletableCache[]>
focal_class.var_name: observers
focal_class.declarator: once
focal_class.modifier: final
focal_class.original_string: final AtomicBoolean once;
focal_class.type: AtomicBoolean
focal_class.var_name: once
focal_class.declarator: error
focal_class.original_string: Throwable error;
focal_class.type: Throwable
focal_class.var_name: error
focal_class.file: rxjava/src/main/java/io/reactivex/internal/operators/completable/CompletableCache.java
focal_class.identifier: CompletableCache
focal_class.interfaces: implements CompletableObserver
focal_class.class_method_signature: CompletableCache.CompletableCache(CompletableSource source)
focal_class.full_signature: public  CompletableCache(CompletableSource source)
focal_class.identifier: CompletableCache
focal_class.modifiers: public
focal_class.parameters: (CompletableSource source)
focal_class.signature:  CompletableCache(CompletableSource source)
focal_class.class_method_signature: CompletableCache.subscribeActual(CompletableObserver s)
focal_class.full_signature: @Override protected void subscribeActual(CompletableObserver s)
focal_class.identifier: subscribeActual
focal_class.modifiers: @Override protected
focal_class.parameters: (CompletableObserver s)
focal_class.return: void
focal_class.signature: void subscribeActual(CompletableObserver s)
focal_class.class_method_signature: CompletableCache.onSubscribe(Disposable d)
focal_class.full_signature: @Override public void onSubscribe(Disposable d)
focal_class.identifier: onSubscribe
focal_class.modifiers: @Override public
focal_class.parameters: (Disposable d)
focal_class.return: void
focal_class.signature: void onSubscribe(Disposable d)
focal_class.class_method_signature: CompletableCache.onError(Throwable e)
focal_class.full_signature: @Override public void onError(Throwable e)
focal_class.identifier: onError
focal_class.modifiers: @Override public
focal_class.parameters: (Throwable e)
focal_class.return: void
focal_class.signature: void onError(Throwable e)
focal_class.class_method_signature: CompletableCache.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: CompletableCache.add(InnerCompletableCache inner)
focal_class.full_signature:  boolean add(InnerCompletableCache inner)
focal_class.identifier: add
focal_class.parameters: (InnerCompletableCache inner)
focal_class.return: boolean
focal_class.signature: boolean add(InnerCompletableCache inner)
focal_class.class_method_signature: CompletableCache.remove(InnerCompletableCache inner)
focal_class.full_signature:  void remove(InnerCompletableCache inner)
focal_class.identifier: remove
focal_class.parameters: (InnerCompletableCache inner)
focal_class.return: void
focal_class.signature: void remove(InnerCompletableCache inner)
focal_class.superclass: extends Completable
focal_method.body: @Override
      public void onComplete() {
          for (InnerCompletableCache inner : observers.getAndSet(TERMINATED)) {
              if (!inner.get()) {
                  inner.actual.onComplete();
              }
          }
      }
focal_method.class_method_signature: CompletableCache.onComplete()
focal_method.full_signature: @Override public void onComplete()
focal_method.identifier: onComplete
focal_method.invocations: getAndSet get onComplete
focal_method.modifiers: @Override public
focal_method.parameters: ()
focal_method.return: void
focal_method.signature: void onComplete()