// Path: src/org/dmfs/dav/FilterBase.java
// public abstract class FilterBase
// {
// 	/**
// 	 * Returns the {@link ElementDescriptor} of this filter. Filters can use this to serialize child elements (which are also filters) in a generic manner.
// 	 * 
// 	 * @return An {@link ElementDescriptor}.
// 	 */
// 	public abstract ElementDescriptor<? extends FilterBase> getElementDescriptor();
// }


import java.io.IOException;
import org.dmfs.dav.FilterBase;
import org.dmfs.xmlobjects.ElementDescriptor;
import org.dmfs.xmlobjects.QualifiedName;
import org.dmfs.xmlobjects.builder.AbstractObjectBuilder;
import org.dmfs.xmlobjects.serializer.SerializerContext;
import org.dmfs.xmlobjects.serializer.SerializerException;
import org.dmfs.xmlobjects.serializer.XmlObjectSerializer.IXmlAttributeWriter;
import org.dmfs.xmlobjects.serializer.XmlObjectSerializer.IXmlChildWriter;
	 * @param caseInsensitive
	 *            Perform case-insensitive matching using the default collation {@link #COLLATION_I_UNICODE_CASEMAP}.
	 */
	public TextMatch(String value, boolean negate, boolean caseInsensitive)
	{
		this(value, negate, caseInsensitive ? COLLATION_I_UNICODE_CASEMAP : null, MatchType.equals);
	}


	/**
	 * Create a text-match filter.
	 * 
	 * @param value
	 *            The filter value.
	 * @param negate
	 *            Negate the search condition (i.e. return only results that do not match the value).
	 * @param collation
	 *            The collation to use, see <a href="http://tools.ietf.org/html/rfc4790">RFC 4790</a> and <a
	 *            href="http://tools.ietf.org/html/rfc4791#section-7.5.1">supported-collation-set</a>.
	 */
	public TextMatch(String value, boolean negate, String collation, MatchType matchType)
	{
		this.value = value;
		this.negate = negate;
		this.collation = collation;
		this.matchType = matchType;
	}


	@Override
// Path: src/org/dmfs/dav/FilterBase.java
// public abstract class FilterBase
// {
// 	/**
// 	 * Returns the {@link ElementDescriptor} of this filter. Filters can use this to serialize child elements (which are also filters) in a generic manner.
// 	 * 
// 	 * @return An {@link ElementDescriptor}.
// 	 */
// 	public abstract ElementDescriptor<? extends FilterBase> getElementDescriptor();
// }


// Path: src/org/dmfs/dav/rfc6352/filter/TextMatch.java
import java.io.IOException;
import org.dmfs.dav.FilterBase;
import org.dmfs.xmlobjects.ElementDescriptor;
import org.dmfs.xmlobjects.QualifiedName;
import org.dmfs.xmlobjects.builder.AbstractObjectBuilder;
import org.dmfs.xmlobjects.serializer.SerializerContext;
import org.dmfs.xmlobjects.serializer.SerializerException;
import org.dmfs.xmlobjects.serializer.XmlObjectSerializer.IXmlAttributeWriter;
import org.dmfs.xmlobjects.serializer.XmlObjectSerializer.IXmlChildWriter;

	 * @param caseInsensitive
	 *            Perform case-insensitive matching using the default collation {@link #COLLATION_I_UNICODE_CASEMAP}.
	 */
	public TextMatch(String value, boolean negate, boolean caseInsensitive)
	{
		this(value, negate, caseInsensitive ? COLLATION_I_UNICODE_CASEMAP : null, MatchType.equals);
	}


	/**
	 * Create a text-match filter.
	 * 
	 * @param value
	 *            The filter value.
	 * @param negate
	 *            Negate the search condition (i.e. return only results that do not match the value).
	 * @param collation
	 *            The collation to use, see <a href="http://tools.ietf.org/html/rfc4790">RFC 4790</a> and <a
	 *            href="http://tools.ietf.org/html/rfc4791#section-7.5.1">supported-collation-set</a>.
	 */
	public TextMatch(String value, boolean negate, String collation, MatchType matchType)
	{
		this.value = value;
		this.negate = negate;
		this.collation = collation;
		this.matchType = matchType;
	}


	@Override
	public ElementDescriptor<? extends FilterBase> getElementDescriptor()