private void writeProperty(MemberShape shape) {
            Optional<String> builderRefOptional =
                    symbolProvider.toSymbol(shape).getProperty(SymbolProperties.BUILDER_REF_INITIALIZER);
            if (builderRefOptional.isPresent()) {
                writer.write("private final $1T<$2B> $3L = $1T.$4L;",
                        BuilderRef.class,
                        symbolProvider.toSymbol(shape),
                        symbolProvider.toMemberName(shape),
                        builderRefOptional.orElseThrow(RuntimeException::new));
                return;
            }

            if (shape.hasNonNullDefault()) {
                writer.write("private $B $L = $C;",
                        symbolProvider.toSymbol(shape),
                        symbolProvider.toMemberName(shape),
                        new DefaultInitializerGenerator(writer, model, symbolProvider, shape));
            } else {
                writer.write("private $B $L;",
                        symbolProvider.toSymbol(shape),
                        symbolProvider.toMemberName(shape));
            }
        }
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