title: Jackson xml 2.9.0: @JacksonXmlElementWrapper not working with @JsonCreator & @JsonProperty constructor
body: <p>I would like that my <code>ParentClass</code> has <code>final</code> fields, 'brokenChildList' list is wrapped xml element and list items have different tag than the list (<code>&lt;brokenChildList&gt;&lt;brokenChild/&gt;&lt;/brokenChildList&gt;</code>).</p>
  
  <p>Here is a snippet of code to reproduce my issues (imports are partially truncated, setters and getters omitted)</p>
  
  <pre><code>import com.fasterxml.jackson.annotation.JsonCreator;
  import com.fasterxml.jackson.annotation.JsonProperty;
  import com.fasterxml.jackson.databind.ObjectMapper;
  import com.fasterxml.jackson.dataformat.xml.XmlMapper;
  import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
  import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
  public class Main {
      public static void main(String... args) throws IOException {
          ObjectMapper xmlMapper = new XmlMapper();
          String xmlString = "&lt;ParentClass&gt;&lt;childClass name=\"name1\" value=\"val1\"/&gt;&lt;brokenChildList&gt;&lt;brokenChild name=\"bc1\" reason=\"bc-val1\"/&gt;&lt;brokenChild name=\"bc2\" reason=\"bc-val2\"/&gt;&lt;/brokenChildList&gt;&lt;/ParentClass&gt;";
          ParentClass parentClass = xmlMapper.readValue(xmlString, ParentClass.class);
          StringWriter stringWriter = new StringWriter();
          xmlMapper.writeValue(stringWriter, parentClass);
          String serialised = stringWriter.toString();
          System.out.println(serialised);
          System.out.println(xmlString.equals(serialised));
      }
  
      public static class ChildClass {
          @JacksonXmlProperty(isAttribute = true)
          private String name;
          @JacksonXmlProperty(isAttribute = true)
          private String value;
          //getters &amp; setters
      }
      public static class BrokenChild {
          @JacksonXmlProperty(isAttribute = true)
          private String name;
          @JacksonXmlProperty(isAttribute = true)
          private String reason;
          //getters &amp; setters
      }
      public static class ParentClass {
          private final ChildClass childClass;
          private final List&lt;BrokenChild&gt; brokenChildList;
          @JsonCreator
          public ParentClass(
              @JsonProperty("childClass") ChildClass childClass,
              @JsonProperty("brokenChildList") List&lt;BrokenChild&gt; brokenChildList
          ) {
              this.childClass = childClass;
              this.brokenChildList = brokenChildList;
          }
  
          @JacksonXmlProperty(localName = "childClass")
          public ChildClass getChildClass() {
              return childClass;
          }
  
          @JacksonXmlElementWrapper(localName = "brokenChildList")
          @JacksonXmlProperty(localName = "brokenChild")
          public List&lt;BrokenChild&gt; getBrokenChildList() {
              return brokenChildList;
          }
      }
  }
  </code></pre>
  
  <p>The above code gives output with <code>Jackson</code> version <code>2.8.10</code>:</p>
  
  <pre><code>&lt;ParentClass&gt;&lt;childClass name="name1" value="val1"/&gt;&lt;brokenChildList&gt;&lt;brokenChild name="bc1" reason="bc-val1"/&gt;&lt;brokenChild name="bc2" reason="bc-val2"/&gt;&lt;/brokenChildList&gt;&lt;/ParentClass&gt;
  true
  </code></pre>
  
  <p>With <code>Jackson</code> version <code>2.9.0</code> it gives:</p>
  
  <pre><code>Exception in thread "main" com.fasterxml.jackson.databind.JsonMappingException: Duplicate property 'brokenChildList' for [simple type, class org.test.Main$ParentClass]
   at [Source: (StringReader); line: 1, column: 1]
  </code></pre>
  
  <p>I would like to find a solution (and any version after <code>2.9.0</code>) that will give same output with the attached code.</p>
  
  <p>My failed attempts include:</p>
  
  <ul>
  <li><p>Replacing <code>@JacksonXmlElementWrapper(localName = "brokenChildList")</code> with <code>@JacksonXmlElementWrapper</code> will rename wrapper element as 'brokenChild' which is undesirable.</p></li>
  <li><p>Removing <code>@JacksonXmlElementWrapper(localName = "brokenChildList")</code> will rename wrapper element as 'brokenChild' which is undesirable.</p></li>
  </ul>