title: JAXBContext context path vs @XMLSeeAlso
body: <p>I have gotten confused by these two aspects of JAXB.</p>
  
  <p>As far as I understand, when passing colon separated package names as context path to <code>newInstance</code> method of JAXBContext, JAXB will add all the classes under these packages to its scope to be used in operations like marshall/unmarshall/validate...etc.</p>
  
  <p>The @XmlSeeAlso annotation instructs the JAXBContext to bind classes. All the examples I've seen use this annotation to specify only its child classes (I couldn't tell why actually).</p>
  
  <p>Below are my questions:</p>
  
  <blockquote>
    <p>1- Can the @XmlSeeAlso be omitted if the classes referred by the
    annotation are within the packages passed to JAXBContext <code>newInstance</code>
    method?</p>
    
    <p>2- If the above is true, then why do we need this annotation in the first
    place, where we can simply pass ALL the packages containing the classes we need to the <code>newInstance</code>
    function?</p>
    
    <p>3- If the above is not true, can we only use packages containing top
    level classes passed to the <code>newInstance</code>, and use the annotation @XmlSeeAlso to reference all
    children of these classes?</p>
  </blockquote>