code: protected <T> T mergeAnnotationValue(T oldValue,
                                           boolean oldValueXML,
                                           T newValue,
                                           String elementName,
                                           T defaultValue) throws InjectionConfigurationException {
          if (newValue.equals(defaultValue) || oldValueXML) { // d663356
              return oldValue;
          }
  
          if (oldValue == null ? isComplete() : !newValue.equals(oldValue)) {
              mergeError(oldValue, newValue, false, elementName, false, elementName);
              return oldValue;
          }
  
          return newValue;
      }
docs: Merges the value of a String or Enum annotation value.
  
  <p>If an error occurs, {@link #mergeError} will be called, which
  requires {@link #getJNDIEnvironmentRefType} to be defined.
  
  @param oldValue the old value
  @param oldValueXML true if the old value was set by XML
  @param newValue the new value
  @param elementName the annotation element name
  @param defaultValue the default value as specified in the annotation
  @return the merged value
  @throws InjectionConfigurationException if an error occurs