test_class.file: rxjava/src/test/java/io/reactivex/internal/operators/observable/ObservablePublishTest.java
test_class.identifier: ObservablePublishTest
test_case.body: @Test
      public void selectorInnerError() {
          PublishSubject<Integer> ps = PublishSubject.create();
  
          ps.publish(new Function<Observable<Integer>, ObservableSource<Integer>>() {
              @Override
              public ObservableSource<Integer> apply(Observable<Integer> v) throws Exception {
                  return Observable.error(new TestException());
              }
          })
          .test()
          .assertFailure(TestException.class);
  
          assertFalse(ps.hasObservers());
      }
test_case.class_method_signature: ObservablePublishTest.selectorInnerError()
test_case.full_signature: @Test public void selectorInnerError()
test_case.identifier: selectorInnerError
test_case.invocations: create assertFailure test publish error assertFalse hasObservers
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void selectorInnerError()
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)