test_class.file: client/src/test/java/io/spine/grpc/StreamObserversTest.java
test_class.identifier: StreamObserversTest
test_case.body: @Test
      @DisplayName("create proper memoizing observer")
      void createMemoizingObserver() {
          MemoizingObserver<Object> observer = memoizingObserver();
  
          checkFirstResponse(observer);
          checkOnNext(observer);
          checkOnError(observer);
          checkIsCompleted(observer);
      }
test_case.class_method_signature: StreamObserversTest.createMemoizingObserver()
test_case.full_signature: @Test @DisplayName("create proper memoizing observer") void createMemoizingObserver()
test_case.identifier: createMemoizingObserver
test_case.invocations: memoizingObserver checkFirstResponse checkOnNext checkOnError checkIsCompleted
test_case.modifiers: @Test @DisplayName("create proper memoizing observer")
test_case.parameters: ()
test_case.return: void
test_case.signature: void createMemoizingObserver()
focal_class.file: client/src/main/java/io/spine/grpc/StreamObservers.java
focal_class.identifier: StreamObservers
focal_class.class_method_signature: StreamObservers.StreamObservers()
focal_class.full_signature: private  StreamObservers()
focal_class.identifier: StreamObservers
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.signature:  StreamObservers()
focal_class.class_method_signature: StreamObservers.noOpObserver()
focal_class.full_signature: public static StreamObserver<T> noOpObserver()
focal_class.identifier: noOpObserver
focal_class.modifiers: public static
focal_class.parameters: ()
focal_class.return: StreamObserver<T>
focal_class.signature: StreamObserver<T> noOpObserver()
focal_class.class_method_signature: StreamObservers.ack(StreamObserver<Response> responseObserver)
focal_class.full_signature: public static void ack(StreamObserver<Response> responseObserver)
focal_class.identifier: ack
focal_class.modifiers: public static
focal_class.parameters: (StreamObserver<Response> responseObserver)
focal_class.return: void
focal_class.signature: void ack(StreamObserver<Response> responseObserver)
focal_class.class_method_signature: StreamObservers.forwardErrorsOnly(StreamObserver<?> delegate)
focal_class.full_signature: @Internal public static StreamObserver<T> forwardErrorsOnly(StreamObserver<?> delegate)
focal_class.identifier: forwardErrorsOnly
focal_class.modifiers: @Internal public static
focal_class.parameters: (StreamObserver<?> delegate)
focal_class.return: StreamObserver<T>
focal_class.signature: StreamObserver<T> forwardErrorsOnly(StreamObserver<?> delegate)
focal_class.class_method_signature: StreamObservers.memoizingObserver()
focal_class.full_signature: @Internal public static MemoizingObserver<T> memoizingObserver()
focal_class.identifier: memoizingObserver
focal_class.modifiers: @Internal public static
focal_class.parameters: ()
focal_class.return: MemoizingObserver<T>
focal_class.signature: MemoizingObserver<T> memoizingObserver()
focal_class.class_method_signature: StreamObservers.fromStreamError(Throwable throwable)
focal_class.full_signature: @SuppressWarnings("ChainOfInstanceofChecks") // Only way to check an exact throwable type. public static Optional<Error> fromStreamError(Throwable throwable)
focal_class.identifier: fromStreamError
focal_class.modifiers: @SuppressWarnings("ChainOfInstanceofChecks") // Only way to check an exact throwable type. public static
focal_class.parameters: (Throwable throwable)
focal_class.return: Optional<Error>
focal_class.signature: Optional<Error> fromStreamError(Throwable throwable)
focal_method.body: @Internal
      public static <T> MemoizingObserver<T> memoizingObserver() {
          return new MemoizingObserver<>();
      }
focal_method.class_method_signature: StreamObservers.memoizingObserver()
focal_method.full_signature: @Internal public static MemoizingObserver<T> memoizingObserver()
focal_method.identifier: memoizingObserver
focal_method.modifiers: @Internal public static
focal_method.parameters: ()
focal_method.return: MemoizingObserver<T>
focal_method.signature: MemoizingObserver<T> memoizingObserver()