// Path: src/main/java/com/sonoport/freesound/query/HTTPRequestMethod.java
// public enum HTTPRequestMethod {
// 
// 	/** HTTP GET. */
// 	GET,
// 
// 	/** HTTP POST. */
// 	POST,
// 
// 	/** HTTP PUT. */
// 	PUT,
// 
// 	/** HTTP DELETE. */
// 	DELETE,
// 
// 	/** HTTP PATCH. */
// 	PATCH,
// 
// 	/** HTTP HEAD. */
// 	HEAD,
// 
// 	/** HTTP OPTIONS. */
// 	OPTIONS;
// }
// 
// Path: src/main/java/com/sonoport/freesound/query/SoundPagingQuery.java
// public abstract class SoundPagingQuery<Q extends SoundPagingQuery<Q>> extends PagingQuery<Q, Sound> {
// 
// 	/** Name of parameter to include the list of fields to return, if specified. */
// 	public static final String FIELDS_PARAMETER = "fields";
// 
// 	/** The fields to retrieve as part of the query. If values are specified here, only those fields will be returned.
// 	 * If no values are specified, freesound will return a default set. */
// 	private Set<String> fields;
// 
// 	/**
// 	 * @param httpRequestMethod HTTP method to use for query
// 	 * @param path The URI path to the API endpoint
// 	 */
// 	protected SoundPagingQuery(final HTTPRequestMethod httpRequestMethod, final String path) {
// 		super(httpRequestMethod, path, new PagingResponseMapper<>(new SoundMapper()));
// 	}
// 
// 	@Override
// 	public Map<String, Object> getQueryParameters() {
// 		final Map<String, Object> params = super.getQueryParameters();
// 
// 		if ((fields != null) && !fields.isEmpty()) {
// 			final StringBuilder fieldsString = new StringBuilder();
// 			for (final String field : fields) {
// 				fieldsString.append(field.trim());
// 				fieldsString.append(',');
// 			}
// 			fieldsString.deleteCharAt(fieldsString.lastIndexOf(","));
// 
// 			params.put(FIELDS_PARAMETER, fieldsString.toString());
// 		}
// 
// 		return params;
// 	}
// 
// 	/**
// 	 * Specify a field to return in the results using the Fluent API approach. Users may specify this method multiple
// 	 * times to define the collection of fields they want returning, and/or use
// 	 * {@link SoundPagingQuery#includeFields(Set)} to  define them as a batch.
// 	 *
// 	 * @param field The field to include in the results
// 	 * @return The current query
// 	 */
// 	@SuppressWarnings("unchecked")
// 	public Q includeField(final String field) {
// 		if (this.fields == null) {
// 			this.fields = new HashSet<>();
// 		}
// 
// 		if (field != null) {
// 			this.fields.add(field);
// 		}
// 
// 		return (Q) this;
// 	}
// 
// 	/**
// 	 * Specify the set of fields to return in the results. Defined using the Fluent API approach.
// 	 *
// 	 * @param fields The fields to return
// 	 * @return The current query
// 	 */
// 	@SuppressWarnings("unchecked")
// 	public Q includeFields(final Set<String> fields) {
// 		if (this.fields == null) {
// 			this.fields = new HashSet<>();
// 		}
// 
// 		if (fields != null) {
// 			this.fields.addAll(fields);
// 		}
// 
// 		return (Q) this;
// 	}
// }


import java.util.Collections;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import com.sonoport.freesound.query.HTTPRequestMethod;
import com.sonoport.freesound.query.SoundPagingQuery;
	 */
	public TextSearch groupByPack(final boolean groupByPack) {
		this.groupByPack = Boolean.valueOf(groupByPack);
		return this;
	}

	/**
	 * Add a sort order to the query, using the Fluent API approach.
	 *
	 * @param sortOrder The sort order to apply
	 * @return The current query
	 */
	public TextSearch sortOrder(final SortOrder sortOrder) {
		this.sortOrder = sortOrder;
		return this;
	}

	@Override
	public Map<String, Object> getQueryParameters() {
		final Map<String, Object> params = super.getQueryParameters();

		if (searchString != null) {
			params.put(SEARCH_STRING_PARAMETER, searchString);
		}

		if (sortOrder != null) {
			params.put(SORT_ORDER_PARAMETER, sortOrder.getParameterValue());
		}

		if (groupByPack != null) {
// Path: src/main/java/com/sonoport/freesound/query/HTTPRequestMethod.java
// public enum HTTPRequestMethod {
// 
// 	/** HTTP GET. */
// 	GET,
// 
// 	/** HTTP POST. */
// 	POST,
// 
// 	/** HTTP PUT. */
// 	PUT,
// 
// 	/** HTTP DELETE. */
// 	DELETE,
// 
// 	/** HTTP PATCH. */
// 	PATCH,
// 
// 	/** HTTP HEAD. */
// 	HEAD,
// 
// 	/** HTTP OPTIONS. */
// 	OPTIONS;
// }
// 
// Path: src/main/java/com/sonoport/freesound/query/SoundPagingQuery.java
// public abstract class SoundPagingQuery<Q extends SoundPagingQuery<Q>> extends PagingQuery<Q, Sound> {
// 
// 	/** Name of parameter to include the list of fields to return, if specified. */
// 	public static final String FIELDS_PARAMETER = "fields";
// 
// 	/** The fields to retrieve as part of the query. If values are specified here, only those fields will be returned.
// 	 * If no values are specified, freesound will return a default set. */
// 	private Set<String> fields;
// 
// 	/**
// 	 * @param httpRequestMethod HTTP method to use for query
// 	 * @param path The URI path to the API endpoint
// 	 */
// 	protected SoundPagingQuery(final HTTPRequestMethod httpRequestMethod, final String path) {
// 		super(httpRequestMethod, path, new PagingResponseMapper<>(new SoundMapper()));
// 	}
// 
// 	@Override
// 	public Map<String, Object> getQueryParameters() {
// 		final Map<String, Object> params = super.getQueryParameters();
// 
// 		if ((fields != null) && !fields.isEmpty()) {
// 			final StringBuilder fieldsString = new StringBuilder();
// 			for (final String field : fields) {
// 				fieldsString.append(field.trim());
// 				fieldsString.append(',');
// 			}
// 			fieldsString.deleteCharAt(fieldsString.lastIndexOf(","));
// 
// 			params.put(FIELDS_PARAMETER, fieldsString.toString());
// 		}
// 
// 		return params;
// 	}
// 
// 	/**
// 	 * Specify a field to return in the results using the Fluent API approach. Users may specify this method multiple
// 	 * times to define the collection of fields they want returning, and/or use
// 	 * {@link SoundPagingQuery#includeFields(Set)} to  define them as a batch.
// 	 *
// 	 * @param field The field to include in the results
// 	 * @return The current query
// 	 */
// 	@SuppressWarnings("unchecked")
// 	public Q includeField(final String field) {
// 		if (this.fields == null) {
// 			this.fields = new HashSet<>();
// 		}
// 
// 		if (field != null) {
// 			this.fields.add(field);
// 		}
// 
// 		return (Q) this;
// 	}
// 
// 	/**
// 	 * Specify the set of fields to return in the results. Defined using the Fluent API approach.
// 	 *
// 	 * @param fields The fields to return
// 	 * @return The current query
// 	 */
// 	@SuppressWarnings("unchecked")
// 	public Q includeFields(final Set<String> fields) {
// 		if (this.fields == null) {
// 			this.fields = new HashSet<>();
// 		}
// 
// 		if (fields != null) {
// 			this.fields.addAll(fields);
// 		}
// 
// 		return (Q) this;
// 	}
// }


// Path: src/main/java/com/sonoport/freesound/query/search/TextSearch.java
import java.util.Collections;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import com.sonoport.freesound.query.HTTPRequestMethod;
import com.sonoport.freesound.query.SoundPagingQuery;

	 */
	public TextSearch groupByPack(final boolean groupByPack) {
		this.groupByPack = Boolean.valueOf(groupByPack);
		return this;
	}

	/**
	 * Add a sort order to the query, using the Fluent API approach.
	 *
	 * @param sortOrder The sort order to apply
	 * @return The current query
	 */
	public TextSearch sortOrder(final SortOrder sortOrder) {
		this.sortOrder = sortOrder;
		return this;
	}

	@Override
	public Map<String, Object> getQueryParameters() {
		final Map<String, Object> params = super.getQueryParameters();

		if (searchString != null) {
			params.put(SEARCH_STRING_PARAMETER, searchString);
		}

		if (sortOrder != null) {
			params.put(SORT_ORDER_PARAMETER, sortOrder.getParameterValue());
		}

		if (groupByPack != null) {
			String numericBooleanValue = "0";