test_class.file: rxjava/src/test/java/io/reactivex/internal/schedulers/ScheduledRunnableTest.java
test_class.identifier: ScheduledRunnableTest
test_case.body: @Test
      public void dispose() {
          CompositeDisposable set = new CompositeDisposable();
          ScheduledRunnable run = new ScheduledRunnable(Functions.EMPTY_RUNNABLE, set);
          set.add(run);
  
          assertFalse(run.isDisposed());
  
          set.dispose();
  
          assertTrue(run.isDisposed());
      }
test_case.class_method_signature: ScheduledRunnableTest.dispose()
test_case.full_signature: @Test public void dispose()
test_case.identifier: dispose
test_case.invocations: add assertFalse isDisposed dispose assertTrue isDisposed
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void dispose()
focal_class.declarator: serialVersionUID = -6120223772001106981L
focal_class.modifier: private static final
focal_class.original_string: private static final long serialVersionUID = -6120223772001106981L;
focal_class.type: long
focal_class.var_name: serialVersionUID
focal_class.declarator: actual
focal_class.modifier: final
focal_class.original_string: final Runnable actual;
focal_class.type: Runnable
focal_class.var_name: actual
focal_class.declarator: PARENT_DISPOSED = new Object()
focal_class.modifier: static final
focal_class.original_string: static final Object PARENT_DISPOSED = new Object();
focal_class.type: Object
focal_class.var_name: PARENT_DISPOSED
focal_class.declarator: SYNC_DISPOSED = new Object()
focal_class.modifier: static final
focal_class.original_string: static final Object SYNC_DISPOSED = new Object();
focal_class.type: Object
focal_class.var_name: SYNC_DISPOSED
focal_class.declarator: ASYNC_DISPOSED = new Object()
focal_class.modifier: static final
focal_class.original_string: static final Object ASYNC_DISPOSED = new Object();
focal_class.type: Object
focal_class.var_name: ASYNC_DISPOSED
focal_class.declarator: DONE = new Object()
focal_class.modifier: static final
focal_class.original_string: static final Object DONE = new Object();
focal_class.type: Object
focal_class.var_name: DONE
focal_class.declarator: PARENT_INDEX = 0
focal_class.modifier: static final
focal_class.original_string: static final int PARENT_INDEX = 0;
focal_class.type: int
focal_class.var_name: PARENT_INDEX
focal_class.declarator: FUTURE_INDEX = 1
focal_class.modifier: static final
focal_class.original_string: static final int FUTURE_INDEX = 1;
focal_class.type: int
focal_class.var_name: FUTURE_INDEX
focal_class.declarator: THREAD_INDEX = 2
focal_class.modifier: static final
focal_class.original_string: static final int THREAD_INDEX = 2;
focal_class.type: int
focal_class.var_name: THREAD_INDEX
focal_class.file: rxjava/src/main/java/io/reactivex/internal/schedulers/ScheduledRunnable.java
focal_class.identifier: ScheduledRunnable
focal_class.interfaces: implements Runnable, Callable<Object>, Disposable
focal_class.class_method_signature: ScheduledRunnable.ScheduledRunnable(Runnable actual, DisposableContainer parent)
focal_class.full_signature: public  ScheduledRunnable(Runnable actual, DisposableContainer parent)
focal_class.identifier: ScheduledRunnable
focal_class.modifiers: public
focal_class.parameters: (Runnable actual, DisposableContainer parent)
focal_class.signature:  ScheduledRunnable(Runnable actual, DisposableContainer parent)
focal_class.class_method_signature: ScheduledRunnable.call()
focal_class.full_signature: @Override public Object call()
focal_class.identifier: call
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Object
focal_class.signature: Object call()
focal_class.class_method_signature: ScheduledRunnable.run()
focal_class.full_signature: @Override public void run()
focal_class.identifier: run
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void run()
focal_class.class_method_signature: ScheduledRunnable.setFuture(Future<?> f)
focal_class.full_signature: public void setFuture(Future<?> f)
focal_class.identifier: setFuture
focal_class.modifiers: public
focal_class.parameters: (Future<?> f)
focal_class.return: void
focal_class.signature: void setFuture(Future<?> f)
focal_class.class_method_signature: ScheduledRunnable.dispose()
focal_class.full_signature: @Override public void dispose()
focal_class.identifier: dispose
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void dispose()
focal_class.class_method_signature: ScheduledRunnable.isDisposed()
focal_class.full_signature: @Override public boolean isDisposed()
focal_class.identifier: isDisposed
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isDisposed()
focal_class.superclass: extends AtomicReferenceArray<Object>
focal_method.body: @Override
      public void dispose() {
          for (;;) {
              Object o = get(FUTURE_INDEX);
              if (o == DONE || o == SYNC_DISPOSED || o == ASYNC_DISPOSED) {
                  break;
              }
              boolean async = get(THREAD_INDEX) != Thread.currentThread();
              if (compareAndSet(FUTURE_INDEX, o, async ? ASYNC_DISPOSED : SYNC_DISPOSED)) {
                  if (o != null) {
                      ((Future<?>)o).cancel(async);
                  }
                  break;
              }
          }
  
          for (;;) {
              Object o = get(PARENT_INDEX);
              if (o == DONE || o == PARENT_DISPOSED || o == null) {
                  return;
              }
              if (compareAndSet(PARENT_INDEX, o, PARENT_DISPOSED)) {
                  ((DisposableContainer)o).delete(this);
                  return;
              }
          }
      }
focal_method.class_method_signature: ScheduledRunnable.dispose()
focal_method.full_signature: @Override public void dispose()
focal_method.identifier: dispose
focal_method.invocations: get get currentThread compareAndSet cancel get compareAndSet delete
focal_method.modifiers: @Override public
focal_method.parameters: ()
focal_method.return: void
focal_method.signature: void dispose()