title: JACKSON JSON deserialization issue with overrloaded setter
body: <p>From several reasons we have to make for developers convenience be able to set the one reference via overloaded setters ( this due it is modelled as oneOf attribute).</p>
  
  <p>I would expect that depending on the JSON schema the polymorphic (oneOf) property would have the deserialized reference to object of FooType or BarType, .... </p>
  
  <p>depending on the JSON schema.
  I was hoping since FooType , BarType follow bean convention they can be easily determined like it happens for JacksonFeature in JAXRS ....</p>
  
  <p>In my dummy test it seems to not work as described below :</p>
  
  <pre><code>ObjectMapper mapper = new ObjectMapper();
      mapper.enable(SerializationFeature.INDENT_OUTPUT);
      mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
      mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
      mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
      mapper.configure(DeserializationFeature.READ_ENUMS_USING_TO_STRING, true);
      mapper.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING, true);
  
   mapper.readValue(SCHEMA, SimplePojo.class);
  </code></pre>
  
  <p>The issue is that the mapper crashes, and JSON schema(SCH1) can not be deserialized to POJO</p>
  
  <p>The JSON schema (SCH1)</p>
  
  <pre><code>{
  "dummy" : {
  "bar" : "bar",
  "baz" : 10
  },
  "other" : {
  "foo" : "hi there"
  },
  "simple" : "simple"
  }
  </code></pre>
  
  <p>The sub element types dummy, other look like :</p>
  
  <pre><code>public class BarType {
  
  private String bar;
  
  private Number baz;
  
  public String getBar() {
      return bar;
  }
  
  public void setBar(String bar) {
      this.bar = bar;
  }
  
  public Number getBaz() {
      return baz;
  }
  
  public void setBaz(Number baz) {
      this.baz = baz;
  }
  </code></pre>
  
  <p>and </p>
  
  <pre><code> public class FooType {
  
  private Object foo;
  
  public Object getFoo() {
      return foo;
  }
  
  public void setFoo(Object foo) {
      this.foo = foo;
  }
  </code></pre>
  
  <p>The top level POJO ( i skipped some part )</p>
  
  <pre><code>public class SimplePojo {
  
  private String simpleField;
  
  private Object dummyField;
  
  private Object otherField;
  
  public String getSimple() {
      return simpleField;
  }
  
  public void setSimple(String simple) {
      this.simpleField = simple;
  }
  
  ...
  public void setDummy(final FooType dummy) {
      this.dummyField = dummy;
  }
  
  
  public void setDummy(final BarType dummy) {
      this.dummyField = dummy;
  }
  
  public void setDummy(final String dummy) {
      this.dummyField = dummy;
  }
  </code></pre>
  
  <p>the issue is that i can not deserialize correctly the schema (SCH1), instead I receive the : </p>
  
  <pre><code>com.fasterxml.jackson.databind.JsonMappingException: Conflicting setter definitions for property    "dummy": com.hybris.api.poc.SimplePojo#setDummy(1 params) vs com.hybris.api.poc.SimplePojo#setDummy(1 params)
  </code></pre>
  
  <p>I was trying to use the @JsonCreator, and @JsonDeserialize but no luck it seems that i can not have two (non primitive) override setters </p>
  
  <pre><code>  @JsonDeserialize( builder = FooType.FooTypeBuilder.class)
  @JsonCreator
  public void setDummy(final FooType dummy) {
      this.dummyField = dummy;
  }
  
  /**
   * Type specific setter for #dummy;
   *
   * @param dummy a reference to be set for #dummy
   */
  @JsonDeserialize( builder = BarType.BarTypeBuilder.class )
  @JsonCreator
  public void setDummy(final BarType dummy) {
      this.dummyField = dummy;
  }
  </code></pre>
  
  <p>Can you hint me where I should the solution or am i breaking some principal concept ?</p>