class BuilderCustomConstructor { private final String name; private final String surname; private BuilderCustomConstructor(final $Builder builder) { this.name = builder.name.trim(); this.surname = builder.surname.trim(); } @java.lang.SuppressWarnings("all") public static NameDef builderCustomConstructor() { return new $Builder(); } @java.lang.SuppressWarnings("all") public static interface NameDef { SurnameDef name(final String name); } @java.lang.SuppressWarnings("all") public static interface SurnameDef { OptionalDef surname(final String surname); } @java.lang.SuppressWarnings("all") public static interface OptionalDef { BuilderCustomConstructor build(); } @java.lang.SuppressWarnings("all") private static class $Builder implements NameDef, SurnameDef, OptionalDef { private String name; private String surname; public SurnameDef name(final String name) { this.name = name; return this; } public OptionalDef surname(final String surname) { this.surname = surname; return this; } public BuilderCustomConstructor build() { return new BuilderCustomConstructor(this); } private $Builder() { } } }