### Question:
MultiLangProtocol { boolean initialize() { Future<Boolean> writeFuture = messageWriter.writeInitializeMessage(initializationInput); return waitForStatusMessage(InitializeMessage.ACTION, null, writeFuture); } MultiLangProtocol(MessageReader messageReader, MessageWriter messageWriter,
            InitializationInput initializationInput, MultiLangDaemonConfiguration configuration);   }### Answer:
@Test public void initializeTest() throws InterruptedException, ExecutionException { when(messageWriter .writeInitializeMessage(argThat(Matchers.withInit(InitializationInput.builder() .shardId(shardId).build())))).thenReturn(buildFuture(true)); when(messageReader.getNextMessageFromSTDOUT()).thenReturn(buildFuture( new StatusMessage("initialize"), Message.class)); assertThat(protocol.initialize(), equalTo(true)); }