import java.util.HashMap;
import java.util.List;
import java.util.Map;
import lombok.Builder;
@Builder class BuilderGeneric<K extends Comparable<K>, V extends List<K>> {
public static @java.lang.SuppressWarnings("all") interface FooDef<K extends Comparable<K>, V extends List<K>> {
public OptionalDef<K, V> foo(final String foo);
public @java.lang.SuppressWarnings("all") OptionalDef<K, V> foo(final Class<?> clazz);
}
public static @java.lang.SuppressWarnings("all") interface OptionalDef<K extends Comparable<K>, V extends List<K>> {
public OptionalDef<K, V> bar(final K arg0, final V arg1);
public OptionalDef<K, V> bar(final java.util.Map<? extends K, ? extends V> arg0);
public BuilderGeneric<K, V> build();
}
private static @java.lang.SuppressWarnings("all") class $Builder<K extends Comparable<K>, V extends List<K>> implements FooDef<K, V>, OptionalDef<K, V> {
private String foo;
private Map<K, V> bar = $barDefault();
static <K extends Comparable<K>, V extends List<K>>Map<K, V> $barDefault() {
return new HashMap<K, V>();
}
public OptionalDef<K, V> foo(final String foo) {
this.foo = foo;
return this;
}
public OptionalDef<K, V> bar(final K arg0, final V arg1) {
this.bar.put(arg0, arg1);
return this;
}
public OptionalDef<K, V> bar(final java.util.Map<? extends K, ? extends V> arg0) {
this.bar.putAll(arg0);
return this;
}
public BuilderGeneric<K, V> build() {
return new BuilderGeneric<K, V>(this);
}
private $Builder() {
super();
}
public @java.lang.SuppressWarnings("all") OptionalDef<K, V> foo(final Class<?> clazz) {
this.foo = clazz.getSimpleName();
return this;
}
}
private final String foo;
private final Map<K, V> bar = $Builder.$barDefault();
private @java.lang.SuppressWarnings("all") BuilderGeneric(final $Builder<K, V> builder) {
super();
this.foo = builder.foo;
this.bar.putAll(builder.bar);
}
public static @java.lang.SuppressWarnings("all") <K extends Comparable<K>, V extends List<K>>FooDef<K, V> builderGeneric() {
return new $Builder<K, V>();
}
}
@Builder class DomainContainer<D> {
public static @java.lang.SuppressWarnings("all") interface ADef<D> {
public DomainDef<D> a(final int a);
}
public static @java.lang.SuppressWarnings("all") interface DomainDef<D> {
public OptionalDef<D> domain(final D domain);
}
public static @java.lang.SuppressWarnings("all") interface OptionalDef<D> {
public DomainContainer<D> build();
}
private static @java.lang.SuppressWarnings("all") class $Builder<D> implements ADef<D>, DomainDef<D>, OptionalDef<D> {
private int a;
private D domain;
public DomainDef<D> a(final int a) {
this.a = a;
return this;
}
public OptionalDef<D> domain(final D domain) {
this.domain = domain;
return this;
}
public DomainContainer<D> build() {
return new DomainContainer<D>(this);
}
private $Builder() {
super();
}
}
private final int a;
private final D domain;
private @java.lang.SuppressWarnings("all") DomainContainer(final $Builder<D> builder) {
super();
this.a = builder.a;
this.domain = builder.domain;
}
public static @java.lang.SuppressWarnings("all") <D>ADef<D> domainContainer() {
return new $Builder<D>();
}
}