@Test
    void testQueryProfileClearAndSet() {
        QueryProfile profile = new QueryProfile("myProfile");
        profile.set("b", "b-value", null);
        Query q = new Query(QueryTestCase.httpEncode("/search?queryProfile=myProfile"), profile.compile(null));
        assertEquals("b-value", q.properties().get("b"));
        assertContains(q.properties().listProperties("b"), "b-value");

        q.properties().set("b", null, null);
        assertContains(q.properties().listProperties("b"), (Object) null);

        q.properties().set("b", "b-value", null);
        assertEquals("b-value", q.properties().get("b"));
        assertContains(q.properties().listProperties("b"), "b-value");
    }
Select is special handled due to the strange idea to also use it to contain subproperties with JSON.
container-search/src/test/java/com/yahoo/search/test/QueryTestCase.java