code: private void processRunAs(Servlet servlet) {
          String servletName = servlet.getServletName();
          Map<String, ConfigItem<String>> runAsMap = this.configurator.getConfigItemMap(RUN_AS_KEY);
          ConfigItem<String> existingRunAs = runAsMap.get(servletName);
  
          RunAs runAs = servlet.getRunAs();
          String roleName = (runAs != null) ? runAs.getRoleName() : null;
          if (runAs != null) {
              if (existingRunAs == null) {
                  runAsMap.put(servletName, this.configurator.createConfigItem(roleName));
                  if (roleName != null)
                      this.servletNameToRunAsRole.put(servletName, roleName);
              } else {
                  this.configurator.validateDuplicateKeyValueConfiguration(SERVLET_KEY, SERVLET_NAME_KEY, servletName, RUN_AS_KEY, roleName, existingRunAs);
              }
          }
          if ((TraceComponent.isAnyTracingEnabled()) && (SecurityServletConfiguratorHelper.tc.isDebugEnabled()))
              Tr.debug(SecurityServletConfiguratorHelper.tc, "servletNameToRunAsRole: " + this.servletNameToRunAsRole, new Object[0]);
      }
docs: Creates the servlet to run-as mapping from the run-as elements in web.xml and/or web-fragment.xml files.
  Note that only one run-as element can be present per servlet. Only the first occurrence is processed.
  If multiple web fragments specify this element with different values and it's absent from the web.xml, this will result
  in an error that fails the application install.
  
  @param servlet the servlet