I'm putting this here:

```java
@Test
    public void testCompletedAfterErrorIsNotSent() {
        BehaviorSubject<String> subject = BehaviorSubject.create("default");

        @SuppressWarnings("unchecked")
        Observer<String> aObserver = mock(Observer.class);
        subject.subscribe(aObserver);

        subject.onNext("one");
        subject.onError(testException);
        subject.onNext("two");
        subject.onCompleted();

        verify(aObserver, times(1)).onNext("default");
        verify(aObserver, times(1)).onNext("one");
        verify(aObserver, times(1)).onError(testException);
        verify(aObserver, never()).onNext("two");
        verify(aObserver, never()).onCompleted();
        
        Observer<Object> o2 = mock(Observer.class);
        subject.subscribe(o2);
        verify(o2, times(1)).onError(testException);
        verify(o2, never()).onNext(any());
        verify(o2, never()).onCompleted();
    }
```

test fails. I think new subscribers to a terminated subject have to see the first termination object and not any event after that.

In this test, ```o2``` receives two "two"s, once when subscribing and once when it is realized the source has terminated.

I'll check the other subjects shortly.