| read() |   | 0% |   | 0% | 3 | 3 | 13 | 13 | 1 | 1 | 
| read(byte[]) |   | 0% |  | n/a | 1 | 1 | 8 | 8 | 1 | 1 | 
| notify(byte[], int, int, IOException) |    | 61% |    | 50% | 3 | 4 | 3 | 8 | 0 | 1 | 
| ObservableInputStream(InputStream) |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| ObservableInputStream(InputStream, List) |   | 0% |  | n/a | 1 | 1 | 3 | 3 | 1 | 1 | 
| close() |    | 64% |    | 50% | 1 | 2 | 3 | 9 | 0 | 1 | 
| ObservableInputStream(InputStream, ObservableInputStream.Observer[]) |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| add(ObservableInputStream.Observer) |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| getObservers() |   | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| remove(ObservableInputStream.Observer) |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| noteDataByte(int) |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| noteError(IOException) |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| consume() |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| noteFinished() |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| removeAllObservers() |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| lambda$noteError$2(IOException, ObservableInputStream.Observer) |   | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| lambda$noteDataByte$0(int, ObservableInputStream.Observer) |   | 0% |  | n/a | 1 | 1 | 1 | 1 | 1 | 1 | 
| read(byte[], int, int) |    | 86% |  | n/a | 0 | 1 | 2 | 8 | 0 | 1 | 
| ObservableInputStream(ObservableInputStream.AbstractBuilder) |   | 100% |  | n/a | 0 | 1 | 0 | 3 | 0 | 1 | 
| noteDataBytes(byte[], int, int) |   | 100% |  | n/a | 0 | 1 | 0 | 2 | 0 | 1 | 
| lambda$noteDataBytes$1(byte[], int, int, ObservableInputStream.Observer) |   | 100% |  | n/a | 0 | 1 | 0 | 1 | 0 | 1 | 
| forEachObserver(IOConsumer) |   | 100% |  | n/a | 0 | 1 | 0 | 2 | 0 | 1 | 
| noteClosed() |   | 100% |  | n/a | 0 | 1 | 0 | 2 | 0 | 1 |