code: public TypeUsage.Builder mergeFrom(TypeUsage.Builder template) {
      // Upcast to access private fields; otherwise, oddly, we get an access violation.
      TypeUsage_Builder base = template;
      TypeUsage_Builder defaults = new TypeUsage.Builder();
      if (!base._unsetProperties.contains(Property.START)
          && (defaults._unsetProperties.contains(Property.START)
              || template.start() != defaults.start())) {
        start(template.start());
      }
      if (!base._unsetProperties.contains(Property.END)
          && (defaults._unsetProperties.contains(Property.END) || template.end() != defaults.end())) {
        end(template.end());
      }
      if (!base._unsetProperties.contains(Property.TYPE)
          && (defaults._unsetProperties.contains(Property.TYPE)
              || !Objects.equals(template.type(), defaults.type()))) {
        type(template.type());
      }
      template.scope().ifPresent(this::scope);
      return (TypeUsage.Builder) this;
    }
docs: Copies values from {@code template}, skipping empty optionals and unset properties.
  
  @return this {@code Builder} object