code: protected Map<String, String> mergeXMLProperties(Map<String, String> oldProperties,
                                                       Set<String> oldXMLProperties,
                                                       List<Property> properties) throws InjectionConfigurationException {
          if (!properties.isEmpty()) {
              if (oldProperties == null) {
                  oldProperties = new HashMap<String, String>();
              }
  
              for (Property property : properties) {
                  String name = property.getName();
                  String newValue = property.getValue();
                  Object oldValue = oldProperties.put(name, newValue);
  
                  if (oldValue != null && !newValue.equals(oldValue)) {
                      mergeError(oldValue, newValue, true, name + " property", true, name);
                      continue;
                  }
  
                  oldXMLProperties.add(name);
              }
          }
  
          return oldProperties;
      }
docs: Merges the properties specified in XML.
  
  <p>If an error occurs, {@link #mergeError} will be called, which
  requires {@link #getJNDIEnvironmentRefType} to be defined.
  
  @param oldProperties the old properties, or null if uninitialized
  @param oldXMLPropertyNames the old property names set by XML to be updated
  @param newProperties the new properties
  @return the old properties updated as necessary
  @throws InjectionConfigurationException if an error occurs