### Question:
LuceneSerializer { protected Query startsWith(QueryMetadata metadata, Operation<?> operation, boolean ignoreCase) { verifyArguments(operation); Path<?> path = getPath(operation.getArg(0)); String field = toField(path); String[] terms = convertEscaped(path, operation.getArg(1), metadata); if (terms.length > 1) { BooleanQuery bq = new BooleanQuery(); for (int i = 0; i < terms.length; ++i) { String s = i == 0 ? terms[i] + "*" : "*" + terms[i] + "*"; bq.add(new WildcardQuery(new Term(field, s)), Occur.MUST); } return bq; } return new PrefixQuery(new Term(field, terms[0])); } LuceneSerializer(boolean lowerCase, boolean splitTerms);  LuceneSerializer(boolean lowerCase, boolean splitTerms,
            Locale sortLocale); Query toQuery(Expression<?> expr, QueryMetadata metadata); Sort toSort(List<? extends OrderSpecifier<?>> orderBys); static final LuceneSerializer DEFAULT; }### Answer:
@Test public void startsWith() throws Exception { testQuery(title.startsWith("Jurassi"), "title:jurassi*", 1); }
@Test public void startsWith_phrase() throws Exception { testQuery(title.startsWith("jurassic par"), "+title:jurassic* +title:*par*", 1); }
@Test public void starts_with_empty_string() throws Exception { testQuery(title.startsWith(""), "title:*", 1); }