Sì ce l'ho. Allora, innanzitutto una premessa. L'accesso alle informazioni negli oggetti da parte di JAXB può avvenire in diversi modi. Se non si specifica niente, il default è dato dalla enum XmlAccessType.PUBLIC_MEMBER che è descritto con:
Il tuo campo bookList ha livello di accesso di default (package level). PUBLIC_MEMBER a livello basilare non lo prenderebbe in considerazione .... ma in realtà lo prende in considerazione perché l'hai annotato esplicitamente.Every public getter/setter pair and every public field will be automatically bound to XML, unless annotated by XmlTransient. Fields or getter/setter pairs that are private, protected, or defaulted to package-only access are bound to XML only when they are explicitly annotated by the appropriate JAXB annotations.
Quindi JAXB deduce una proprietà "bookList" dal campo e poi la stessa proprietà "bookList" dai getter/setter.