public static Optional<EitherType> findEitherType(Flavour flavour, Elements elements) {
return Flavours.cases()
.Jdk(() -> Optional.<EitherType>empty())
.Fj(() -> Optional.of(eitherType(elements.getTypeElement("fj.data.Either"), "left", "right")))
.Fugue(() -> Optional.of(eitherType(elements.getTypeElement("io.atlassian.fugue.Either"), "left", "right")))
<BUG>.Fugue2(() -> Optional.of(eitherType(elements.getTypeElement("com.atlassian.fugue.Either"), "left", "right")))
.apply(flavour);</BUG>
}
public static abstract class OptionType {
<BUG>public static OptionType optionTye(TypeElement typeElement, String noneConstructor, String someConstructor) {
</BUG>
return new OptionType() {

public static Optional<EitherType> findEitherType(Flavour flavour, Elements elements) {
return Flavours.cases()
.Jdk(() -> Optional.<EitherType>empty())
.Fj(() -> Optional.of(eitherType(elements.getTypeElement("fj.data.Either"), "left", "right")))
.Fugue(() -> Optional.of(eitherType(elements.getTypeElement("io.atlassian.fugue.Either"), "left", "right")))
.Fugue2(() -> Optional.of(eitherType(elements.getTypeElement("com.atlassian.fugue.Either"), "left", "right")))
.Javaslang(() -> Optional.of(eitherType(elements.getTypeElement("javaslang.control.Either"), "left", "right")))
.apply(flavour);
}
public static abstract class OptionType {
public static OptionType optionType(TypeElement typeElement, String noneConstructor, String someConstructor) {
return new OptionType() {
