@Override
        public Void listShape(ListShape shape) {
            writer.openBlock("public Builder $1L($2B $1L) {",
                    "}",
                    memberName,
                    symbolProvider.toSymbol(shape),
                    () -> {
                        writer.write("clear$U();", memberName);
                        writer.write("this.$1L.get().addAll($1L);", memberName);
                        writer.writeWithNoFormatting("return this;");
                    }).newLine();

            // Clear all
            writer.openBlock("public Builder clear$U() {", "}", memberName, () -> {
                writer.write("this.$L.get().clear();", memberName);
                writer.writeWithNoFormatting("return this;");
            }).newLine();

            // Set one
            writer.openBlock("public Builder add$U($T value) {",
                    "}",
                    memberName,
                    symbolProvider.toSymbol(shape.getMember()),
                    () -> {
                        writer.write("this.$L.get().add(value);", memberName);
                        writer.write("return this;");
                    }).newLine();

            // Remove one
            writer.openBlock("public Builder remove$U($T value) {",
                    "}",
                    memberName,
                    symbolProvider.toSymbol(shape.getMember()),
                    () -> {
                        writer.write("this.$L.get().remove(value);", memberName);
                        writer.write("return this;");
                    }).newLine();
            return null;
        }
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