private void writeBuilderClass() {
        writer.writeDocString(writer.format("Builder for {@link $T}.", symbol));
        writer.writeInline("public static final class Builder $C", (Runnable) this::writeBuilderInterface);
        writer.indent();
        writer.newLine();
        baseShape.accept(new BuilderPropertyGenerator());
        writer.newLine();
        writer.writeWithNoFormatting("private Builder() {}").newLine();
        baseShape.accept(new BuilderSetterGenerator());
        writer.override();
        writer.openBlock("public $T build() {",
                "}",
                symbol,
                () -> writer.write("return new $C;", (Runnable) this::writeBuilderReturn));
        writer.dedent().write("}");
        writer.newLine();
    }
Generates a static builder for a Java class.

<p>In addition to the static builder class, this generator will create
{@code builder()} and {@code toBuilder()} methods for the target class.
smithy-trait-codegen/src/main/java/software/amazon/smithy/traitcodegen/generators/BuilderGenerator.java