/*
 * Licensed to Elasticsearch under one or more contributor
 * license agreements. See the NOTICE file distributed with
 * this work for additional information regarding copyright
 * ownership. Elasticsearch licenses this file to you under
 * the Apache License, Version 2.0 (the "License"); you may
 * not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

package org.elasticsearch.index.query;

import java.io.IOException;

/**
 * Defines a query parser that is able to read and parse a query object in {@link org.elasticsearch.common.xcontent.XContent}
 * format and create an internal object representing the query, implementing {@link QueryBuilder}, which can be streamed to other nodes.
 */
@FunctionalInterface
public interface QueryParser<QB extends QueryBuilder<QB>> {

    /**
     * Creates a new {@link QueryBuilder} from the query held by the {@link QueryParseContext}
     * in {@link org.elasticsearch.common.xcontent.XContent} format
     *
     * @param parseContext
     *            the input parse context. The state on the parser contained in
     *            this context will be changed as a side effect of this method
     *            call
     * @return the new QueryBuilder
     */
    QB fromXContent(QueryParseContext parseContext) throws IOException;

    /**
     * @return an empty {@link QueryBuilder} instance for this parser that can be used for deserialization
     */
    default QB getBuilderPrototype() { // TODO remove this when nothing implements it
        throw new UnsupportedOperationException();
    }
}

@@ -902,40 +902,40 @@
  to 
-read and parse a query object in
+parse %7B@link QueryBuilder%7Ds from
  %7B@l
@@ -985,144 +985,8 @@
 ent%7D
-%0A * format and create an internal object representing the query, implementing %7B@link QueryBuilder%7D, which can be streamed to other nodes
 .%0A *
@@ -1068,17 +1068,16 @@
 %3CQB%3E%3E %7B%0A
-%0A
     /**%0A
@@ -1495,24 +1495,24 @@
 der%0A     */%0A
+
     QB fromX
@@ -1574,274 +1574,7 @@
 ion;
-%0A%0A    /**%0A     * @return an empty %7B@link QueryBuilder%7D instance for this parser that can be used for deserialization%0A     */%0A    default QB getBuilderPrototype() %7B // TODO remove this when nothing implements it%0A        throw new UnsupportedOperationException();%0A    %7D
 %0A%7D%0A

Remove getQueryPrototype from QueryParser