docs: public org.inferred.freebuilder.processor.property.Property.Builder mergeFrom(
        org.inferred.freebuilder.processor.property.Property.Builder template) {
      // Upcast to access private fields; otherwise, oddly, we get an access violation.
      Property_Builder base = template;
      Property_Builder defaults = new org.inferred.freebuilder.processor.property.Property.Builder();
      if (!base._unsetProperties.contains(Property.TYPE)
          && (defaults._unsetProperties.contains(Property.TYPE)
              || !Objects.equals(template.getType(), defaults.getType()))) {
        setType(template.getType());
      }
      template.getBoxedType().ifPresent(this::setBoxedType);
      if (!base._unsetProperties.contains(Property.NAME)
          && (defaults._unsetProperties.contains(Property.NAME)
              || !Objects.equals(template.getName(), defaults.getName()))) {
        setName(template.getName());
      }
      if (!base._unsetProperties.contains(Property.CAPITALIZED_NAME)
          && (defaults._unsetProperties.contains(Property.CAPITALIZED_NAME)
              || !Objects.equals(template.getCapitalizedName(), defaults.getCapitalizedName()))) {
        setCapitalizedName(template.getCapitalizedName());
      }
      if (!base._unsetProperties.contains(Property.ALL_CAPS_NAME)
          && (defaults._unsetProperties.contains(Property.ALL_CAPS_NAME)
              || !Objects.equals(template.getAllCapsName(), defaults.getAllCapsName()))) {
        setAllCapsName(template.getAllCapsName());
      }
      if (!base._unsetProperties.contains(Property.USING_BEAN_CONVENTION)
          && (defaults._unsetProperties.contains(Property.USING_BEAN_CONVENTION)
              || template.isUsingBeanConvention() != defaults.isUsingBeanConvention())) {
        setUsingBeanConvention(template.isUsingBeanConvention());
      }
      if (!base._unsetProperties.contains(Property.GETTER_NAME)
          && (defaults._unsetProperties.contains(Property.GETTER_NAME)
              || !Objects.equals(template.getGetterName(), defaults.getGetterName()))) {
        setGetterName(template.getGetterName());
      }
      if (!base._unsetProperties.contains(Property.FULLY_CHECKED_CAST)
          && (defaults._unsetProperties.contains(Property.FULLY_CHECKED_CAST)
              || template.isFullyCheckedCast() != defaults.isFullyCheckedCast())) {
        setFullyCheckedCast(template.isFullyCheckedCast());
      }
      addAllAccessorAnnotations(base.accessorAnnotations);
      return (org.inferred.freebuilder.processor.property.Property.Builder) this;
    }