title: Java Jackson Polymorphic - Match on interface field results in duplicate field name
body: <p>I was playing around with polymorphism in combination with Jackson. I have a working example but one thing is a bit weird for me. When generating the Json I get a duplicate field. </p>
  
  <p>I have the following tree: Garden -> Animal -> Dog or Cat. </p>
  
  <pre><code>@Value
  @NoArgsConstructor(force = true, access = AccessLevel.PRIVATE)
  @AllArgsConstructor
  public class Garden {
      public String location;
      public Animal animal;
  }
  
  
  @JsonIgnoreProperties(ignoreUnknown = true)
  @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXTERNAL_PROPERTY, property = "name", visible = true, defaultImpl = Dog.class)
  @JsonSubTypes({
          @JsonSubTypes.Type(value = Dog.class, name = "Dog"),
          @JsonSubTypes.Type(value = Cat.class, name = "Cat")}
  )
  public interface Animal {
  }
  
  @Value
  @NoArgsConstructor(force = true, access = AccessLevel.PRIVATE)
  @AllArgsConstructor
  public class Cat implements Animal {
      public String name;
      public String nickname;
  }
  
  @Value
  @NoArgsConstructor(force = true, access = AccessLevel.PRIVATE)
  @AllArgsConstructor
  public class Dog implements Animal {
      public String name;
      public String command;
  }
  </code></pre>
  
  <p>The program:</p>
  
  <pre><code>public class App {
      public static void main(String[] args) {
          ObjectMapper objectMapper = new ObjectMapper();
  
          Animal animal = new Dog("Dog", "Sit");
          Garden garden = new Garden("Utrecht", animal);
  
          try {
              String gardenJson = objectMapper.writeValueAsString(garden);
  
              System.out.println(gardenJson);
  
              Garden deserializedDog = objectMapper.readValue("{\"location\":\"Utrecht\",\"animal\":{\"name\":\"Dog\",\"command\":\"Sit\"}}", Garden.class);
              System.out.println("");
          } catch (Exception e) {
              e.printStackTrace();
          }
      }
  }
  </code></pre>
  
  <p>When I deserialize from Json to Java, everything runs as expected (Using the following Json: {"location":"Utrecht","animal":{"name":"Dog","command":"Sit"}}). But when generating Json: </p>
  
  <pre><code>{"location":"Utrecht","animal":{"name":"Dog","name":"Dog","command":"Sit"}}
  </code></pre>
  
  <p>How to get rid of the duplicate name property? </p>