void test_result_with_match_features() {
            Routable routable = deserialize("QueryResultMessage-6", DocumentProtocol.MESSAGE_QUERYRESULT, Language.CPP);
            assertTrue(routable instanceof QueryResultMessage);

            var msg = (QueryResultMessage)routable;
            assertEquals(2, msg.getResult().getHitCount());

            var h = msg.getResult().getHit(0);
            assertTrue(h instanceof SearchResult.Hit);
            assertEquals(7.0, h.getRank(), 1E-6);
            assertEquals("doc2", h.getDocId());
            assertTrue(h.getMatchFeatures().isPresent());
            var mf = h.getMatchFeatures().get();
            assertEquals(12.0, mf.field("foo").asDouble(), 1E-6);
            assertEqualsData(new byte[] { 'T', 'h', 'e', 'r', 'e' }, mf.field("bar").asData());

            h = msg.getResult().getHit(1);
            assertTrue(h instanceof SearchResult.Hit);
            assertEquals(5.0, h.getRank(), 1E-6);
            assertEquals("doc1", h.getDocId());
            assertTrue(h.getMatchFeatures().isPresent());
            mf = h.getMatchFeatures().get();
            assertEquals(1.0, mf.field("foo").asDouble(), 1E-6);
            assertEqualsData(new byte[] { 'H', 'i' }, mf.field("bar").asData());
        }
@author Simon Thoresen Hult
@author Vegard Sjonfjell
documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/Messages60TestCase.java