import lombok.Builder;
@Builder(allowReset = true) class BuilderAllowRest {
public static @java.lang.SuppressWarnings("all") interface FinalFieldDef {
public AnotherFinalFieldDef finalField(final String finalField);
public FinalFieldDef reset();
}
public static @java.lang.SuppressWarnings("all") interface AnotherFinalFieldDef {
public OptionalDef anotherFinalField(final String anotherFinalField);
public FinalFieldDef reset();
}
public static @java.lang.SuppressWarnings("all") interface OptionalDef {
public OptionalDef initializedPrimitiveField(final int initializedPrimitiveField);
public OptionalDef initializedField(final Boolean initializedField);
public OptionalDef primitiveField(final double primitiveField);
public OptionalDef field(final Float field);
public BuilderAllowRest build();
public FinalFieldDef reset();
}
private static @java.lang.SuppressWarnings("all") class $Builder implements FinalFieldDef, AnotherFinalFieldDef, OptionalDef {
private String finalField;
private String anotherFinalField;
private int initializedPrimitiveField = $initializedPrimitiveFieldDefault();
private Boolean initializedField = $initializedFieldDefault();
private double primitiveField;
private Float field;
static int $initializedPrimitiveFieldDefault() {
return 42;
}
static Boolean $initializedFieldDefault() {
return Boolean.FALSE;
}
public AnotherFinalFieldDef finalField(final String finalField) {
this.finalField = finalField;
return this;
}
public OptionalDef anotherFinalField(final String anotherFinalField) {
this.anotherFinalField = anotherFinalField;
return this;
}
public OptionalDef initializedPrimitiveField(final int initializedPrimitiveField) {
this.initializedPrimitiveField = initializedPrimitiveField;
return this;
}
public OptionalDef initializedField(final Boolean initializedField) {
this.initializedField = initializedField;
return this;
}
public OptionalDef primitiveField(final double primitiveField) {
this.primitiveField = primitiveField;
return this;
}
public OptionalDef field(final Float field) {
this.field = field;
return this;
}
public BuilderAllowRest build() {
return new BuilderAllowRest(this);
}
public FinalFieldDef reset() {
this.finalField = null;
this.anotherFinalField = null;
this.initializedPrimitiveField = $initializedPrimitiveFieldDefault();
this.initializedField = $initializedFieldDefault();
this.primitiveField = 0.0d;
this.field = null;
return this;
}
private $Builder() {
super();
}
}
private final String finalField;
private final String anotherFinalField;
private int initializedPrimitiveField = $Builder.$initializedPrimitiveFieldDefault();
private Boolean initializedField = $Builder.$initializedFieldDefault();
private double primitiveField;
private Float field;
private @java.lang.SuppressWarnings("all") BuilderAllowRest(final $Builder builder) {
super();
this.finalField = builder.finalField;
this.anotherFinalField = builder.anotherFinalField;
this.initializedPrimitiveField = builder.initializedPrimitiveField;
this.initializedField = builder.initializedField;
this.primitiveField = builder.primitiveField;
this.field = builder.field;
}
public static @java.lang.SuppressWarnings("all") FinalFieldDef builderAllowRest() {
return new $Builder();
}
}