docs: @Nullable
      protected <T> T resolveExpression(String context, String expression, Class<T> type) {
          if (environment.containsProperty(expression)) {
              return environment.getProperty(expression, type)
                      .orElseThrow(() ->
                              new ConfigurationException("Could not resolve expression: [" + expression + "] in placeholder ${" + context + "}"));
          }
          if (NameUtils.isEnvironmentName(expression)) {
              String envVar = System.getenv(expression);
              if (StringUtils.isNotEmpty(envVar)) {
                  return conversionService.convert(envVar, type)
                          .orElseThrow(() ->
                                  new ConfigurationException("Could not resolve expression: [" + expression + "] in placeholder ${" + context + "}"));
              }
          }
          return null;
      }