docs: public void merge(PersistenceContextRef pCtxtRef) throws InjectionException {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "merge : " + pCtxtRef);
  
          String thisUnitName = getPuName();
          String mergedUnitName = pCtxtRef.getPersistenceUnitName();
          int mergedType = pCtxtRef.getTypeValue();
          Boolean mergedExtendedType = null;
          if (mergedType != PersistenceContextRef.TYPE_UNSPECIFIED) {
              mergedExtendedType = mergedType == PersistenceContextRef.TYPE_EXTENDED;
          }
          int mergedSync = pCtxtRef.getSynchronizationValue();
          Boolean mergedUnsynchronized = null;
          if (mergedSync != PersistenceContextRef.SYNCHRONIZATION_UNSPECIFIED) {
              mergedUnsynchronized = mergedSync == PersistenceContextRef.SYNCHRONIZATION_UNSYNCHRONIZED;
          }
          Properties mergedProperties = getPersistenceProperties(pCtxtRef);
  
          if (isTraceOn && tc.isDebugEnabled()) {
              Tr.debug(tc, "new=" + getJndiName() + ":" + mergedUnitName + ":" +
                           mergedExtendedType + ":" + mergedUnsynchronized + ":" + mergedProperties);
              Tr.debug(tc, "cur=" + getJndiName() + ":" + thisUnitName + ":" +
                           ivExtendedType + ":" + ivProperties);
          }
  
          // Merge the persistence unit name. Either one must be not set or they
          // must match exactly.
          if (thisUnitName == null || thisUnitName.equals("")) {
              if (mergedUnitName != null) {
                  setPuName(mergedUnitName);
                  ivPuFromXML = true; // d662814
              }
          } else if (mergedUnitName != null && !mergedUnitName.equals("")) {
              if (!thisUnitName.equals(mergedUnitName)) {
                  Tr.error(tc, "CONFLICTING_XML_VALUES_CWWJP0041E",
                           ivNameSpaceConfig.getModuleName(),
                           ivNameSpaceConfig.getApplicationName(),
                           "persistence-unit-name",
                           "persistence-context-ref",
                           "persistence-context-ref-name",
                           getJndiName(),
                           thisUnitName,
                           mergedUnitName);
                  String exMsg = "CWWJP0041E: The " + ivNameSpaceConfig.getModuleName() +
                                 " module of the " + ivNameSpaceConfig.getApplicationName() +
                                 " application has conflicting configuration data in the XML" +
                                 " deployment descriptor. Conflicting " + "persistence-unit-name" +
                                 " element values exist for multiple " + "persistence-context-ref" +
                                 " elements with the same " + "persistence-context-ref-name" +
                                 " element value : " + getJndiName() + ". The conflicting " +
                                 "persistence-unit-name" + " element values are " + thisUnitName +
                                 " and " + mergedUnitName + ".";
                  throw new InjectionConfigurationException(exMsg);
              }
          }
  
          // Merge the persistence context type. Either one must be not set or they
          // must match exactly.
          if (ivExtendedType == null) {
              if (mergedExtendedType != null) {
                  ivExtendedType = mergedExtendedType;
                  ivTypeFromXML = true; // d662814
              }
          } else if (mergedExtendedType != null) {
              if (ivExtendedType.booleanValue() != mergedExtendedType.booleanValue()) {
                  Tr.error(tc, "CONFLICTING_XML_VALUES_CWWJP0041E",
                           ivNameSpaceConfig.getModuleName(),
                           ivNameSpaceConfig.getApplicationName(),
                           "persistence-context-type",
                           "persistence-context-ref",
                           "persistence-context-ref-name",
                           getJndiName(),
                           getTypeName(ivExtendedType),
                           getTypeName(mergedExtendedType));
                  String exMsg = "CWWJP0041E: The " + ivNameSpaceConfig.getModuleName() +
                                 " module of the " + ivNameSpaceConfig.getApplicationName() +
                                 " application has conflicting configuration data in the XML" +
                                 " deployment descriptor. Conflicting " + "persistence-context-type" +
                                 " element values exist for multiple " + "persistence-context-ref" +
                                 " elements with the same " + "persistence-context-ref-name" +
                                 " element value : " + getJndiName() + ". The conflicting " +
                                 "persistence-context-type" + " element values are " +
                                 getTypeName(ivExtendedType) +
                                 " and " + getTypeName(mergedExtendedType) + ".";
                  throw new InjectionConfigurationException(exMsg);
              }
          }
  
          if (ivUnsynchronized == null) {
              if (mergedUnsynchronized != null) {
                  ivUnsynchronized = mergedUnsynchronized;
                  ivSynchronizationFromXML = true;
              }
          } else if (mergedUnsynchronized != null) {
              if (ivUnsynchronized.booleanValue() != mergedUnsynchronized.booleanValue()) {
                  Tr.error(tc, "CONFLICTING_XML_VALUES_CWWJP0041E",
                           ivNameSpaceConfig.getModuleName(),
                           ivNameSpaceConfig.getApplicationName(),
                           "persistence-context-synchronization",
                           "persistence-context-ref",
                           "persistence-context-ref-name",
                           getJndiName(),
                           getSynchronizationName(ivUnsynchronized),
                           getSynchronizationName(mergedUnsynchronized));
                  String exMsg = "CWWJP0041E: The " + ivNameSpaceConfig.getModuleName() +
                                 " module of the " + ivNameSpaceConfig.getApplicationName() +
                                 " application has conflicting configuration data in the XML" +
                                 " deployment descriptor. Conflicting " + "persistence-context-synchronization" +
                                 " element values exist for multiple " + "persistence-context-ref" +
                                 " elements with the same " + "persistence-context-ref-name" +
                                 " element value : " + getJndiName() + ". The conflicting " +
                                 "persistence-context-type" + " element values are " +
                                 getSynchronizationName(ivUnsynchronized) +
                                 " and " + getSynchronizationName(mergedUnsynchronized) + ".";
                  throw new InjectionConfigurationException(exMsg);
              }
          }
  
          // Merge the persistence context properties. Either one must be not set or they
          // must match exactly.
          if (ivProperties.isEmpty()) {
              ivProperties = mergedProperties;
          } else if (!mergedProperties.isEmpty()) {
              if (!ivProperties.equals(mergedProperties)) {
                  Tr.error(tc, "CONFLICTING_XML_VALUES_CWWJP0041E",
                           ivNameSpaceConfig.getModuleName(),
                           ivNameSpaceConfig.getApplicationName(),
                           "persistence-property",
                           "persistence-context-ref",
                           "persistence-context-ref-name",
                           getJndiName(),
                           ivProperties,
                           mergedProperties);
                  String exMsg = "CWWJP0041E: The " + ivNameSpaceConfig.getModuleName() +
                                 " module of the " + ivNameSpaceConfig.getApplicationName() +
                                 " application has conflicting configuration data in the XML" +
                                 " deployment descriptor. Conflicting " + "persistence-property" +
                                 " element values exist for multiple " + "persistence-context-ref" +
                                 " elements with the same " + "persistence-context-ref-name" +
                                 " element value : " + getJndiName() + ". The conflicting " +
                                 "persistence-property" + " element values are " +
                                 ivProperties + " and " + mergedProperties + ".";
                  throw new InjectionConfigurationException(exMsg);
              }
          }
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(tc, "merge : " + this);
      }