// Path: examples/src/main/java/com/github/peckb1/examples/auto/fraggles/Boober.java
// @AutoJackson
// public interface Boober extends Fraggle<DaveGoelz> {
// 
//     @Named("superstitions") long getNumberOfSuperstitions();
// 
// }
// 
// Path: examples/src/main/java/com/github/peckb1/examples/auto/fraggles/Gobo.java
// @AutoJackson
// public interface Gobo<X extends Number> extends Fraggle<JerryNelson> {
// 
//     @Named("postcards") int getFetchedPostcards();
// 
//     X getX();
// 
//     @Named("zed") Map getMap() throws IOException;
// }
// 
// Path: examples/src/main/java/com/github/peckb1/examples/auto/fraggles/Mokey.java
// @AutoJackson
// public interface Mokey extends Fraggle {
// 
//     @Named("radishes") int getRadishesPicked();
// 
// }
// 
// Path: examples/src/main/java/com/github/peckb1/examples/auto/fraggles/Wembley.java
// @AutoJackson
// public interface Wembley extends Fraggle<SteveWhitmire> {
// 
//     @Named("fires") int getNumberOfFiresPutOut();
// 
// }
// 
// Path: examples/src/main/java/com/github/peckb1/examples/auto/Fraggle.java
// enum FraggleName {
//     GOBO(Gobo.class),
//     MOKEY(Mokey.class),
//     WEMBLEY(Wembley.class),
//     BOOBER(Boober.class),
//     RED(Red.class);
// 
//     private final Class<? extends Fraggle> fraggleClass;
// 
//     FraggleName(Class<? extends Fraggle> fraggleClass) {
//         this.fraggleClass = fraggleClass;
//     }
// 
//     @AutoJacksonTypeClass
//     public Class<? extends Fraggle> getFraggleClass() {
//         return fraggleClass;
//     }
// }
// 
// Path: examples/src/main/java/com/github/peckb1/examples/auto/fraggles/Red.java
// @AutoJackson
// public interface Red extends Fraggle<KarenPrell> {
// 
//     @Named("dives") int getDives();
// 
// }


import com.github.peckb1.examples.auto.fraggles.Boober;
import com.github.peckb1.examples.auto.fraggles.Gobo;
import com.github.peckb1.examples.auto.fraggles.Mokey;
import com.github.peckb1.examples.auto.fraggles.Wembley;
import com.github.peckb1.examples.auto.Fraggle.FraggleName;
import com.github.peckb1.examples.auto.fraggles.Red;
import com.github.peckb1.processor.AutoJackson;
import com.github.peckb1.processor.AutoJacksonTypeClass;
import com.github.peckb1.processor.Named;
import java.util.Optional;
package com.github.peckb1.examples.auto;



@AutoJackson(type = @AutoJackson.Type(FraggleName.class))
public interface Fraggle<M extends Muppeteer> {

    FraggleName getName();
    Integer getAge();
    @Named("occupation") String getJob();
    Optional<Fraggle> getRoommate();
    M getMuppeteer();

    enum FraggleName {
        GOBO(Gobo.class),
        MOKEY(Mokey.class),
        WEMBLEY(Wembley.class),
        BOOBER(Boober.class),
// Path: examples/src/main/java/com/github/peckb1/examples/auto/fraggles/Boober.java
// @AutoJackson
// public interface Boober extends Fraggle<DaveGoelz> {
// 
//     @Named("superstitions") long getNumberOfSuperstitions();
// 
// }
// 
// Path: examples/src/main/java/com/github/peckb1/examples/auto/fraggles/Gobo.java
// @AutoJackson
// public interface Gobo<X extends Number> extends Fraggle<JerryNelson> {
// 
//     @Named("postcards") int getFetchedPostcards();
// 
//     X getX();
// 
//     @Named("zed") Map getMap() throws IOException;
// }
// 
// Path: examples/src/main/java/com/github/peckb1/examples/auto/fraggles/Mokey.java
// @AutoJackson
// public interface Mokey extends Fraggle {
// 
//     @Named("radishes") int getRadishesPicked();
// 
// }
// 
// Path: examples/src/main/java/com/github/peckb1/examples/auto/fraggles/Wembley.java
// @AutoJackson
// public interface Wembley extends Fraggle<SteveWhitmire> {
// 
//     @Named("fires") int getNumberOfFiresPutOut();
// 
// }
// 
// Path: examples/src/main/java/com/github/peckb1/examples/auto/Fraggle.java
// enum FraggleName {
//     GOBO(Gobo.class),
//     MOKEY(Mokey.class),
//     WEMBLEY(Wembley.class),
//     BOOBER(Boober.class),
//     RED(Red.class);
// 
//     private final Class<? extends Fraggle> fraggleClass;
// 
//     FraggleName(Class<? extends Fraggle> fraggleClass) {
//         this.fraggleClass = fraggleClass;
//     }
// 
//     @AutoJacksonTypeClass
//     public Class<? extends Fraggle> getFraggleClass() {
//         return fraggleClass;
//     }
// }
// 
// Path: examples/src/main/java/com/github/peckb1/examples/auto/fraggles/Red.java
// @AutoJackson
// public interface Red extends Fraggle<KarenPrell> {
// 
//     @Named("dives") int getDives();
// 
// }


// Path: examples/src/main/java/com/github/peckb1/examples/auto/Fraggle.java
import com.github.peckb1.examples.auto.fraggles.Boober;
import com.github.peckb1.examples.auto.fraggles.Gobo;
import com.github.peckb1.examples.auto.fraggles.Mokey;
import com.github.peckb1.examples.auto.fraggles.Wembley;
import com.github.peckb1.examples.auto.Fraggle.FraggleName;
import com.github.peckb1.examples.auto.fraggles.Red;
import com.github.peckb1.processor.AutoJackson;
import com.github.peckb1.processor.AutoJacksonTypeClass;
import com.github.peckb1.processor.Named;
import java.util.Optional;

package com.github.peckb1.examples.auto;



@AutoJackson(type = @AutoJackson.Type(FraggleName.class))
public interface Fraggle<M extends Muppeteer> {

    FraggleName getName();
    Integer getAge();
    @Named("occupation") String getJob();
    Optional<Fraggle> getRoommate();
    M getMuppeteer();

    enum FraggleName {
        GOBO(Gobo.class),
        MOKEY(Mokey.class),
        WEMBLEY(Wembley.class),
        BOOBER(Boober.class),
        RED(Red.class);