.addLine("/**")
.addLine(" * Returns an unmodifiable view of the set that will be returned by")
.addLine(" * %s.", metadata.getType().javadocNoArgMethodLink(property.getGetterName()))
.addLine(" * Changes to this builder will be reflected in the view.")
.addLine(" */")
<BUG>.addLine("public %s<%s> %s() {", Set.class, elementType, getter(property))

.addLine("  return %s.unmodifiableSet(%s);", Collections.class, property.getName())
</BUG>
.addLine("}");

.addLine("/**")
.addLine(" * Clears the set to be returned from %s.",
metadata.getType().javadocNoArgMethodLink(property.getGetterName()))
.addLine(" *")
.addLine(" * @return this {@code %s} object", metadata.getBuilder().getSimpleName())
.addLine(" */")
.addLine("public %s %s() {", metadata.getBuilder(), clearMethod(property));
if (code.feature(GUAVA).isAvailable()) {
code.addLine("if (%s instanceof %s) {", property.getName(), ImmutableSet.class)
.addLine("  %s = %s.of();", property.getName(), ImmutableSet.class)
.addLine("} else {");
