### Question:
RunMessageDecoder implements RequestMessageDecoder { @Override public RequestMessage decode( Neo4jPack.Unpacker unpacker ) throws IOException { String statement = unpacker.unpackString(); MapValue params = unpacker.unpackMap(); return new RunMessage( statement, params ); } RunMessageDecoder( BoltResponseHandler responseHandler ); @Override int signature(); @Override BoltResponseHandler responseHandler(); @Override RequestMessage decode( Neo4jPack.Unpacker unpacker );  }### Answer:
@Test void shouldDecodeAckFailure() throws Exception { Neo4jPackV1 neo4jPack = new Neo4jPackV1(); RunMessage originalMessage = new RunMessage( "UNWIND range(1, 10) AS x RETURN x, $y", map( new String[]{"y"}, new AnyValue[]{longValue( 42 )} ) ); PackedInputArray innput = new PackedInputArray( serialize( neo4jPack, originalMessage ) ); Unpacker unpacker = neo4jPack.newUnpacker( innput ); unpacker.unpackStructHeader(); unpacker.unpackStructSignature(); RequestMessage deserializedMessage = decoder.decode( unpacker ); assertEquals( originalMessage, deserializedMessage ); }