class BuilderAllowRest {
private final String finalField;
private final String anotherFinalField;
private int initializedPrimitiveField = $Builder.$initializedPrimitiveFieldDefault();
private Boolean initializedField = $Builder.$initializedFieldDefault();
private double primitiveField;
private Float field;
@java.lang.SuppressWarnings("all")
private BuilderAllowRest(final $Builder builder) {
this.finalField = builder.finalField;
this.anotherFinalField = builder.anotherFinalField;
this.initializedPrimitiveField = builder.initializedPrimitiveField;
this.initializedField = builder.initializedField;
this.primitiveField = builder.primitiveField;
this.field = builder.field;
}
@java.lang.SuppressWarnings("all")
public static FinalFieldDef builderAllowRest() {
return new $Builder();
}
@java.lang.SuppressWarnings("all")
public static interface FinalFieldDef {
AnotherFinalFieldDef finalField(final String finalField);
FinalFieldDef reset();
}
@java.lang.SuppressWarnings("all")
public static interface AnotherFinalFieldDef {
OptionalDef anotherFinalField(final String anotherFinalField);
FinalFieldDef reset();
}
@java.lang.SuppressWarnings("all")
public static interface OptionalDef {
OptionalDef initializedPrimitiveField(final int initializedPrimitiveField);
OptionalDef initializedField(final Boolean initializedField);
OptionalDef primitiveField(final double primitiveField);
OptionalDef field(final Float field);
BuilderAllowRest build();
FinalFieldDef reset();
}
@java.lang.SuppressWarnings("all")
private static 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;
this.field = null;
return this;
}
private $Builder() {
}
}
}