// 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;
		this.isNotDefined = isNotDefined;
		this.textMatch = null;
	}


	/**
	 * Create a filter that matches the value of a parameter.
	 * 
	 * @param name
	 *            The name of the parameter, must not be empty.
	 * @param textMatch
	 *            The filter for the text.
	 */
	public ParamFilter(String name, TextMatch textMatch)
	{
		if (name == null)
		{
			throw new NullPointerException("the parameter name of a param filter must not be null");
		}
		if (name.length() == 0)
		{
			throw new IllegalArgumentException("the parameter name of a param filter must not be empty");
		}
		this.name = name;
		this.isNotDefined = false;
		this.textMatch = textMatch;
	}


	@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/ParamFilter.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;

		this.isNotDefined = isNotDefined;
		this.textMatch = null;
	}


	/**
	 * Create a filter that matches the value of a parameter.
	 * 
	 * @param name
	 *            The name of the parameter, must not be empty.
	 * @param textMatch
	 *            The filter for the text.
	 */
	public ParamFilter(String name, TextMatch textMatch)
	{
		if (name == null)
		{
			throw new NullPointerException("the parameter name of a param filter must not be null");
		}
		if (name.length() == 0)
		{
			throw new IllegalArgumentException("the parameter name of a param filter must not be empty");
		}
		this.name = name;
		this.isNotDefined = false;
		this.textMatch = textMatch;
	}


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