JAXB Unmarshal deixando atributos nulos

Boa tarde,

Estou enfrentando um problema ao tentar fazer unmarshal de um XML de retorno do envio de CTe versão 3.0. Estou recebendo o seguinte XML do webservice:

<retEnviCte xmlns="http://www.portalfiscal.inf.br/cte" versao="3.00"><tpAmb>2</tpAmb><cUF>43</cUF><verAplic>RS20170524123312</verAplic><cStat>103</cStat><xMotivo>Lote recebido com sucesso</xMotivo><infRec><nRec>431000011194855</nRec><dhRecbto>2017-06-13T13:27:22-03:00</dhRecbto><tMed>1</tMed></infRec></retEnviCte>

Quero converter para a classe TRetEnviCTe que está assim:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "TRetEnviCTe", propOrder = {
    "tpAmb",
    "cuf",
    "verAplic",
    "cStat",
    "xMotivo",
    "infRec"
})
public class TRetEnviCTe {

    @XmlElement(required = true)
    protected String tpAmb;
    @XmlElement(name = "cUF", required = true)
    protected String cuf;
    @XmlElement(required = true)
    protected String verAplic;
    @XmlElement(required = true)
    protected String cStat;
    @XmlElement(required = true)
    protected String xMotivo;
    protected TRetEnviCTe.InfRec infRec;
    @XmlAttribute(name = "versao", required = true)
    protected String versao;

//Getters and setters

@XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "nRec",
        "dhRecbto",
        "tMed"
    })
    public static class InfRec {

        @XmlElement(required = true)
        protected String nRec;
        @XmlElement(required = true)
        protected String dhRecbto;
        @XmlElement(required = true)
        protected BigInteger tMed;

        //Getters and setters

        }
}

Percebam que a classe InfRec está aninhada em TRetEnviCTe. Quando faço unmarshal do XML para a classe através do método a seguir, os campos são preenchidos corretamente exceto o objeto InfRec, que é criado mas fica com seus atributos nulos.

private static TRetEnviCTe getDocumentRet(String xml) throws JAXBException {
        JAXBContext context2 = JAXBContext.newInstance(TRetEnviCTe.class);
        Unmarshaller unmarshaller2 = context2.createUnmarshaller();
        return unmarshaller2.unmarshal(new StreamSource(new StringReader(xml)), TRetEnviCTe.class).getValue();
}

Alguma ideia do que poderia estar causando este problema?

Obrigado