JAXB com Generics

Olá pessoal,
Será que alguém consegue me ajudar na solução?
A situação é a seguinte:
Tenho as classes Protocolo, Tipo1 e Tipo2 que estão abaixo:

Classes Protocolo

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Protocolo<T> {

	private T dados;

	private HttpStatus http;

	public T getDados() {
		return dados;
	}

	public void setDados(T dados) {
		this.dados = dados;
	}

	public HttpStatus getHttp() {
		return http;
	}

	public void setHttp(HttpStatus http) {
		this.http = http;
	}

	@Override
	public String toString() {
		return "Protocolo [dados=" + dados + ", http=" + http + "]";
	}

}

e as outras duas classes chamdas Tipo1 e Tipo2

public class Tipo1 {

	private String nome;

	private String telefone;

	private int tipo;

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	public int getTipo() {
		return tipo;
	}

	public void setTipo(int tipo) {
		this.tipo = tipo;
	}

	@Override
	public String toString() {
		return "Tipo1 [nome=" + nome + ", telefone=" + telefone + ", tipo=" + tipo + "]";
	}
}
public class Tipo2 {

	private LocalDate target;

	private String descricao;
	
	public LocalDate getTarget() {
		return target;
	}
	
	public void setTarget(LocalDate target) {
		this.target = target;
	}
	
	public String getDescricao() {
		return descricao;
	}
	
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	@Override
	public String toString() {
		return "Tipo2 [target=" + target + ", descricao=" + descricao + "]";
	}

}

Segue agora xml tipo1 e tipo2:
tipo1

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<protocolo>
	<dados>
		<nome>teste 5</nome>
		<telefone>telefone teste 5</telefone>
		<tipo>1</tipo>
	</dados>
	<http>
		<codigo>200</codigo>
		<descricao>Feita</descricao>
	</http>
</protocolo>

tipo2:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<protocolo>
	<dados>
		<target>2018-06-29</target>
		<descricao>descrição de tipo2</descricao>
	</dados>
	<http>
		<codigo>200</codigo>
		<descricao>Feita</descricao>
	</http>
</protocolo> 

Veja que o atributo dados muda e por isso fiz genérico na classe protocolo, não consigo converter esses xmls e objetos de forma alguma.

Alguém já passou por isso?

Bom dia @rmacedo, tudo bom? Cara, nessa situação com generics eu encontrei 2 saídas:

  1. Adicionar as classes Tipo1 e Tipo2 ao contexto do Jaxb e assim criar o marshaller:

    `Ex: JaxbContext.newInstance(Protocolo.class, Tipo1.class, Tipo2.class);

    ou

  2. Adicionar a anotação @XmlAnyElement no atributo dados, porém dessa forma vai ser necessário outras anotações em outros lugares.

    Na classe Protocolo:

    @XmlRootElement
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlSeeAlso({Tipo1.class, Tipo2.class})
    public class Protocolo<T> {

    @XmlAnyElement
    private T dados;

    Com isso as classes Tipo1 e Tipo2 deverão ter a anotação @XmlRootElement