docs: @FFDCIgnore(ELException.class)
      @Trivial
      protected String processString(String name, String expression, boolean immediateOnly, boolean mask) {
  
          final String methodName = "processString";
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(tc, methodName, new Object[] { name, (expression == null) ? null : mask ? OBFUSCATED_STRING : expression, immediateOnly, mask });
          }
  
          String result;
          boolean immediate = false;
  
          try {
              Object obj = evaluateElExpression(expression, mask);
              if (obj == null) {
                  throw new IllegalArgumentException("EL expression '" + (mask ? OBFUSCATED_STRING : expression) + "' for '" + name + "'evaluated to null.");
              } else if (obj instanceof String) {
                  result = (String) obj;
                  immediate = isImmediateExpression(expression, mask);
              } else {
                  throw new IllegalArgumentException("Expected '" + name + "' to evaluate to a String value.");
              }
          } catch (ELException e) {
              result = expression;
              immediate = true;
          }
  
          String finalResult = (immediateOnly && !immediate) ? null : result;
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(tc, methodName, (finalResult == null) ? null : mask ? OBFUSCATED_STRING : finalResult);
          }
  
          return finalResult;
      }