test_class.file: rxjava/src/test/java/io/reactivex/internal/operators/observable/ObservablePublishTest.java
test_class.identifier: ObservablePublishTest
test_case.body: @Test
      public void nextCancelRace() {
          for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) {
  
              final PublishSubject<Integer> ps = PublishSubject.create();
  
              final ConnectableObservable<Integer> co = ps.publish();
  
              final TestObserver<Integer> to = co.test();
  
              Runnable r1 = new Runnable() {
                  @Override
                  public void run() {
                      ps.onNext(1);
                  }
              };
  
              Runnable r2 = new Runnable() {
                  @Override
                  public void run() {
                      to.cancel();
                  }
              };
  
              TestHelper.race(r1, r2);
          }
      }
test_case.class_method_signature: ObservablePublishTest.nextCancelRace()
test_case.full_signature: @Test public void nextCancelRace()
test_case.identifier: nextCancelRace
test_case.invocations: create publish test onNext cancel race
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void nextCancelRace()
focal_class.declarator: source
focal_class.modifier: final
focal_class.original_string: final ObservableSource<T> source;
focal_class.type: ObservableSource<T>
focal_class.var_name: source
focal_class.declarator: current
focal_class.modifier: final
focal_class.original_string: final AtomicReference<PublishObserver<T>> current;
focal_class.type: AtomicReference<PublishObserver<T>>
focal_class.var_name: current
focal_class.declarator: onSubscribe
focal_class.modifier: final
focal_class.original_string: final ObservableSource<T> onSubscribe;
focal_class.type: ObservableSource<T>
focal_class.var_name: onSubscribe
focal_class.file: rxjava/src/main/java/io/reactivex/internal/operators/observable/ObservablePublish.java
focal_class.identifier: ObservablePublish
focal_class.interfaces: implements HasUpstreamObservableSource<T>
focal_class.class_method_signature: ObservablePublish.create(ObservableSource<T> source)
focal_class.full_signature: public static ConnectableObservable<T> create(ObservableSource<T> source)
focal_class.identifier: create
focal_class.modifiers: public static
focal_class.parameters: (ObservableSource<T> source)
focal_class.return: ConnectableObservable<T>
focal_class.signature: ConnectableObservable<T> create(ObservableSource<T> source)
focal_class.class_method_signature: ObservablePublish.ObservablePublish(ObservableSource<T> onSubscribe, ObservableSource<T> source,
                                final AtomicReference<PublishObserver<T>> current)
focal_class.full_signature: private  ObservablePublish(ObservableSource<T> onSubscribe, ObservableSource<T> source,
                                final AtomicReference<PublishObserver<T>> current)
focal_class.identifier: ObservablePublish
focal_class.modifiers: private
focal_class.parameters: (ObservableSource<T> onSubscribe, ObservableSource<T> source,
                                final AtomicReference<PublishObserver<T>> current)
focal_class.signature:  ObservablePublish(ObservableSource<T> onSubscribe, ObservableSource<T> source,
                                final AtomicReference<PublishObserver<T>> current)
focal_class.class_method_signature: ObservablePublish.source()
focal_class.full_signature: @Override public ObservableSource<T> source()
focal_class.identifier: source
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: ObservableSource<T>
focal_class.signature: ObservableSource<T> source()
focal_class.class_method_signature: ObservablePublish.subscribeActual(Observer<? super T> observer)
focal_class.full_signature: @Override protected void subscribeActual(Observer<? super T> observer)
focal_class.identifier: subscribeActual
focal_class.modifiers: @Override protected
focal_class.parameters: (Observer<? super T> observer)
focal_class.return: void
focal_class.signature: void subscribeActual(Observer<? super T> observer)
focal_class.class_method_signature: ObservablePublish.connect(Consumer<? super Disposable> connection)
focal_class.full_signature: @Override public void connect(Consumer<? super Disposable> connection)
focal_class.identifier: connect
focal_class.modifiers: @Override public
focal_class.parameters: (Consumer<? super Disposable> connection)
focal_class.return: void
focal_class.signature: void connect(Consumer<? super Disposable> connection)
focal_class.superclass: extends ConnectableObservable<T>
focal_method.body: public static <T> ConnectableObservable<T> create(ObservableSource<T> source) {
          // the current connection to source needs to be shared between the operator and its onSubscribe call
          final AtomicReference<PublishObserver<T>> curr = new AtomicReference<PublishObserver<T>>();
          ObservableSource<T> onSubscribe = new PublishSource<T>(curr);
          return RxJavaPlugins.onAssembly(new ObservablePublish<T>(onSubscribe, source, curr));
      }
focal_method.class_method_signature: ObservablePublish.create(ObservableSource<T> source)
focal_method.full_signature: public static ConnectableObservable<T> create(ObservableSource<T> source)
focal_method.identifier: create
focal_method.invocations: onAssembly
focal_method.modifiers: public static
focal_method.parameters: (ObservableSource<T> source)
focal_method.return: ConnectableObservable<T>
focal_method.signature: ConnectableObservable<T> create(ObservableSource<T> source)