docs: public Datatype.Builder mergeFrom(Datatype value) {
      Datatype_Builder defaults = new Datatype.Builder();
      if (defaults._unsetProperties.contains(Property.TYPE)
          || !Objects.equals(value.getType(), defaults.getType())) {
        setType(value.getType());
      }
      if (defaults._unsetProperties.contains(Property.INTERFACE_TYPE)
          || value.isInterfaceType() != defaults.isInterfaceType()) {
        setInterfaceType(value.isInterfaceType());
      }
      if (defaults._unsetProperties.contains(Property.BUILDER)
          || !Objects.equals(value.getBuilder(), defaults.getBuilder())) {
        setBuilder(value.getBuilder());
      }
      if (defaults._unsetProperties.contains(Property.EXTENSIBLE)
          || value.isExtensible() != defaults.isExtensible()) {
        setExtensible(value.isExtensible());
      }
      value.getBuilderFactory().ifPresent(this::setBuilderFactory);
      if (defaults._unsetProperties.contains(Property.GENERATED_BUILDER)
          || !Objects.equals(value.getGeneratedBuilder(), defaults.getGeneratedBuilder())) {
        setGeneratedBuilder(value.getGeneratedBuilder());
      }
      if (defaults._unsetProperties.contains(Property.VALUE_TYPE)
          || !Objects.equals(value.getValueType(), defaults.getValueType())) {
        setValueType(value.getValueType());
      }
      if (defaults._unsetProperties.contains(Property.PARTIAL_TYPE)
          || !Objects.equals(value.getPartialType(), defaults.getPartialType())) {
        setPartialType(value.getPartialType());
      }
      value.getRebuildableType().ifPresent(this::setRebuildableType);
      if (defaults._unsetProperties.contains(Property.PROPERTY_ENUM)
          || !Objects.equals(value.getPropertyEnum(), defaults.getPropertyEnum())) {
        setPropertyEnum(value.getPropertyEnum());
      }
      putAllStandardMethodUnderrides(value.getStandardMethodUnderrides());
      if (defaults._unsetProperties.contains(Property.BUILDER_SERIALIZABLE)
          || value.isBuilderSerializable() != defaults.isBuilderSerializable()) {
        setBuilderSerializable(value.isBuilderSerializable());
      }
      if (defaults._unsetProperties.contains(Property.HAS_TO_BUILDER_METHOD)
          || value.getHasToBuilderMethod() != defaults.getHasToBuilderMethod()) {
        setHasToBuilderMethod(value.getHasToBuilderMethod());
      }
      if (value instanceof Value && generatedBuilderAnnotations == ImmutableList.<Excerpt>of()) {
        generatedBuilderAnnotations = ImmutableList.copyOf(value.getGeneratedBuilderAnnotations());
      } else {
        addAllGeneratedBuilderAnnotations(value.getGeneratedBuilderAnnotations());
      }
      if (value instanceof Value && valueTypeAnnotations == ImmutableList.<Excerpt>of()) {
        valueTypeAnnotations = ImmutableList.copyOf(value.getValueTypeAnnotations());
      } else {
        addAllValueTypeAnnotations(value.getValueTypeAnnotations());
      }
      if (defaults._unsetProperties.contains(Property.VALUE_TYPE_VISIBILITY)
          || !Objects.equals(value.getValueTypeVisibility(), defaults.getValueTypeVisibility())) {
        setValueTypeVisibility(value.getValueTypeVisibility());
      }
      if (value instanceof Value && nestedClasses == ImmutableList.<Excerpt>of()) {
        nestedClasses = ImmutableList.copyOf(value.getNestedClasses());
      } else {
        addAllNestedClasses(value.getNestedClasses());
      }
      return (Datatype.Builder) this;
    }