docs: private void synchronizeLocaleIndependentForEntity(
          CmsFile file,
          CmsXmlContent content,
          Collection<String> skipPaths,
          CmsEntity entity)
      throws CmsXmlException {
  
          CmsObject cms = getCmsObject();
          String entityId = entity.getId();
          Locale contentLocale = CmsLocaleManager.getLocale(CmsContentDefinition.getLocaleFromId(entityId));
          CmsContentTypeVisitor visitor = null;
          CmsEntity originalEntity = null;
          if (content.getHandler().hasVisibilityHandlers()) {
              visitor = new CmsContentTypeVisitor(cms, file, contentLocale);
              visitor.visitTypes(content.getContentDefinition(), getWorkplaceLocale(cms));
          }
          if (content.hasLocale(contentLocale)) {
              if ((visitor != null) && visitor.hasInvisibleFields()) {
                  // we need to add invisible content values to the entity before saving
                  Element element = content.getLocaleNode(contentLocale);
                  originalEntity = readEntity(
                      content,
                      element,
                      contentLocale,
                      entityId,
                      "",
                      getTypeUri(content.getContentDefinition()),
                      visitor,
                      true,
                      entity);
              }
              content.removeLocale(contentLocale);
          }
          content.addLocale(cms, contentLocale);
          if ((visitor != null) && visitor.hasInvisibleFields()) {
              transferInvisibleValues(originalEntity, entity, visitor);
          }
          addEntityAttributes(cms, content, "", entity, contentLocale);
          content.synchronizeLocaleIndependentValues(cms, skipPaths, contentLocale);
      }