JAXB y patrón compuesto

Estoy trabajando con JAXB en este momento y estoy luchando por anotar mi noción compuesta de consulta de condición previa para que JAXB esté contento.

Una consulta previa puede ser:

simple: solo un nodo de texto que contiene la consultacompuestoO: las condiciones previas de 1 consulta de condición previa O las otras coincidenciasY: las condiciones previas de 1 consulta de condición previa Y las otras coincidencias

Por supuesto, las consultas compuestas pueden estar hechas de consultas compuestas, como en el siguiente ejemplo:

    <precondition>
        <or>
            <and>
                <query>foo</query>
                <query>bar</query>
            </and>
            <query>baz</query>
        </or>
    </precondition>

En mi modelo Java, tengo una sola interfaz PreconditionQuery anotada (en realidad una clase abstracta ya que JAXB parece descontento con las interfaces) con 3 implementaciones SimplePreconditionQuery, CompoundOrPreconditionQuery y CompoundAndPreconditionQuery.

@XmlSeeAlso(PreconditionQuery.class)
@XmlRootElement(name = "query")
public class SimplePreconditionQuery extends PreconditionQuery {

    private String query;

    @XmlValue
    public String getQuery() {
        return query;
    }

    public void setQuery(String query) {
        this.query = query;
    }
}

Para los compuestos (CompoundOrPreconditionQuery es básicamente el mismo):

@XmlSeeAlso(PreconditionQuery.class)
@XmlRootElement(name = "and")
public class CompoundAndPreconditionQuery extends PreconditionQuery {

    private Collection<PreconditionQuery> preconditionQueries = newArrayList();

    @XmlElementRef(name = "query")
    public Collection<PreconditionQuery> getPreconditionQueries() {
        return preconditionQueries;
    }

    public void setPreconditionQueries(Collection<PreconditionQuery> preconditionQueries) {
        this.preconditionQueries = preconditionQueries;
    }
}

Finalmente, en el nivel de frijol adjunto, mapeé así:

public class Precondition {

    private PreconditionQuery query;

    @XmlElementRef(required = true)
    public PreconditionQuery getQuery() {
        return query;
    }

    public void setQuery(PreconditionQuery query) {
        this.query = query;
    }
}

Al final, JAXB se queja de no poder resolver esto:

Caused by: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
Invalid @XmlElementRef : Type "class xxx.PreconditionQuery" or any of its subclasses are not known to this context.
    this problem is related to the following location:
        at public xxx.PreconditionQuery xxx.Precondition.getQuery()
        at xxx.Precondition

Si@XmlElementRef no hace el trabajo, ¿qué hará?

Respuestas a la pregunta(1)

Su respuesta a la pregunta