### Question:
InitMessageDecoder implements RequestMessageDecoder { @Override public RequestMessage decode( Neo4jPack.Unpacker unpacker ) throws IOException { String userAgent = unpacker.unpackString(); Map<String,Object> authToken = readMetaDataMap( unpacker ); return new InitMessage( userAgent, authToken ); } InitMessageDecoder( BoltResponseHandler responseHandler ); @Override int signature(); @Override BoltResponseHandler responseHandler(); @Override RequestMessage decode( Neo4jPack.Unpacker unpacker ); static Map<String,Object> readMetaDataMap( Neo4jPack.Unpacker unpacker );  }### Answer:
@Test void shouldDecodeAckFailure() throws Exception { Neo4jPackV1 neo4jPack = new Neo4jPackV1(); InitMessage originalMessage = new InitMessage( "My Driver", map( "user", "neo4j", "password", "secret" ) ); PackedInputArray innput = new PackedInputArray( serialize( neo4jPack, originalMessage ) ); Unpacker unpacker = neo4jPack.newUnpacker( innput ); unpacker.unpackStructHeader(); unpacker.unpackStructSignature(); RequestMessage deserializedMessage = decoder.decode( unpacker ); assertEquals( originalMessage, deserializedMessage ); }