// Path: examples/src/main/java/com/github/peckb1/examples/base/fraggles/Wembley.java
// public class Wembley extends Fraggle {
//     public Wembley(@JsonProperty(value = HAIR_COLOUR_KEY, required = true) String hairColour,
//                    @JsonProperty(value = HAT_KEY, required = true) Boolean wearsHats,
//                    @JsonProperty(value = JOB_KEY) Optional<Job> job) {
//         super(hairColour, wearsHats, job);
//     }
// 
//     @Override
//     public FraggleName getFraggleName() {
//         return FraggleName.WEMBLEY;
//     }
// }
// 
// Path: examples/src/main/java/com/github/peckb1/examples/base/fraggles/Boober.java
// public class Boober extends Fraggle {
//     public Boober(@JsonProperty(value = HAIR_COLOUR_KEY, required = true) String hairColour,
//                   @JsonProperty(value = HAT_KEY, required = true) Boolean wearsHats,
//                   @JsonProperty(value = JOB_KEY) Optional<Job> job) {
//         super(hairColour, wearsHats, job);
//     }
// 
//     @Override
//     public FraggleName getFraggleName() {
//         return FraggleName.BOOBER;
//     }
// }


import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
import com.github.peckb1.examples.base.fraggles.Wembley;
import com.github.peckb1.examples.base.fraggles.Boober;
import java.util.Optional;
package com.github.peckb1.examples.base;



@JsonTypeInfo(use = Id.NAME,
        include = JsonTypeInfo.As.PROPERTY,
        property = "name") // not compile time checked
@JsonSubTypes({
// Path: examples/src/main/java/com/github/peckb1/examples/base/fraggles/Wembley.java
// public class Wembley extends Fraggle {
//     public Wembley(@JsonProperty(value = HAIR_COLOUR_KEY, required = true) String hairColour,
//                    @JsonProperty(value = HAT_KEY, required = true) Boolean wearsHats,
//                    @JsonProperty(value = JOB_KEY) Optional<Job> job) {
//         super(hairColour, wearsHats, job);
//     }
// 
//     @Override
//     public FraggleName getFraggleName() {
//         return FraggleName.WEMBLEY;
//     }
// }
// 
// Path: examples/src/main/java/com/github/peckb1/examples/base/fraggles/Boober.java
// public class Boober extends Fraggle {
//     public Boober(@JsonProperty(value = HAIR_COLOUR_KEY, required = true) String hairColour,
//                   @JsonProperty(value = HAT_KEY, required = true) Boolean wearsHats,
//                   @JsonProperty(value = JOB_KEY) Optional<Job> job) {
//         super(hairColour, wearsHats, job);
//     }
// 
//     @Override
//     public FraggleName getFraggleName() {
//         return FraggleName.BOOBER;
//     }
// }


// Path: examples/src/main/java/com/github/peckb1/examples/base/Fraggle.java
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
import com.github.peckb1.examples.base.fraggles.Wembley;
import com.github.peckb1.examples.base.fraggles.Boober;
import java.util.Optional;

package com.github.peckb1.examples.base;



@JsonTypeInfo(use = Id.NAME,
        include = JsonTypeInfo.As.PROPERTY,
        property = "name") // not compile time checked
@JsonSubTypes({
        @Type(value = Wembley.class, name = "WEMBLEY"), // not compile time checked