docs: public static void populateInterceptorBindingMap(List<InterceptorBinding> bindingList
                                                       , Map<String, List<EJBInterceptorBinding>> map)
                      throws EJBConfigurationException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
          {
              Tr.entry(tc, "populateInterceptorBindingMap");
          }
  
          // For each InterceptorBinding, create a map entry and update InterceptorsMap
          //
          for (InterceptorBinding ib : bindingList)
          {
              // Get EJBName from WCCM objects and the list of EJBInterceptorBinding
              // for this EJB from the map (which might be null if this is the first one).
              String ejbName = ib.getEjbName();
              List<EJBInterceptorBinding> ejbList = map.get(ejbName);
  
              // Get method name and parameters from WCCM objects.
              NamedMethod nm = ib.getMethod();
              List<String> parms = null;
  
              // Get method parameters if a NamedMethod is provided
              // by the InterceptorBinding.
              if (nm != null)
              {
                  parms = nm.getMethodParamList();
              }
  
              // Get list of interceptor class names if there is no
              // InterceptorOrder in InterceptorBinding object since they
              // are required to be mutually exclusive by the xml schema.
              InterceptorOrder order = ib.getInterceptorOrder();
              List<String> interceptorClassNameList = null;
              List<String> interceptorOrderList = null;
              if (order == null)
              {
                  interceptorClassNameList = ib.getInterceptorClassNames();
              }
              else
              {
                  interceptorOrderList = order.getInterceptorClassNames();
              }
  
              // Create a EJBInterceptorBinding object from metadata obtained from WCCM.
              EJBInterceptorBinding binding;
              if (ejbName.equals("*"))
              {
                  // Sytle 1 InterceptorBinding, which is for default interceptors.
                  if (nm != null)
                  {
                      EJBConfigurationException ecex;
                      ecex = new EJBConfigurationException("CNTR0239E: The method-name element is not valid in"
                                                           + " an interceptor-binding when EJB name is \"*\"");
  
                      // CNTR0239E: The method-name element is not valid for a style 1 interceptor-binding element.
                      Tr.error(tc, "METHOD_NAME_INVALID_FOR_DEFAULT_CNTR0239E");
                      throw ecex;
                  }
  
                  // Create EJBInterceptorBinding for default interceptors and
                  // put it into the InterceptorBindingMap for the module.
                  binding = new EJBInterceptorBinding(interceptorClassNameList, interceptorOrderList);
              }
              else if (nm == null)
              {
                  // Sytle 2 InterceptorBinding, which is for class level interceptors
                  // for a specified EJB. Create EJBInterceptorBinding and put it
                  // into the InterceptorBindingMap for the module.
                  binding = new EJBInterceptorBinding(ejbName, interceptorClassNameList, interceptorOrderList);
              }
              else if (parms == null)
              {
                  // Sytle 3 InterceptorBinding, which is for method level interceptors
                  // all methods of a specified EJB of a specified method name.
                  // Create EJBInterceptorBinding and put it
                  // into the InterceptorBindingMap for the module.
                  String methodName = nm.getMethodName();
                  binding = new EJBInterceptorBinding(ejbName, interceptorClassNameList, interceptorOrderList
                                  , methodName, null);
              }
              else
              {
                  // Sytle 4 InterceptorBinding, which is for method level interceptors
                  // with a specified method signature of a specified EJB.
                  // Create EJBInterceptorBinding and put it
                  // into the InterceptorBindingMap for the module.
                  String methodName = nm.getMethodName();
                  binding = new EJBInterceptorBinding(ejbName, interceptorClassNameList, interceptorOrderList
                                  , methodName, parms);
              }
  
              // Set exclude-default-interceptors only if set in ejb-jar.xml file.
              if (ib.isSetExcludeDefaultInterceptors())
              {
                  binding.setExcludeDefaultInterceptors(ib.isExcludeDefaultInterceptors());
              }
  
              // Set exclude-class-interceptors only if set in ejb-jar.xml file.
              if (ib.isSetExcludeClassInterceptors())
              {
                  binding.setExcludeClassLevelInterceptors(ib.isExcludeClassInterceptors());
              }
  
              // Add this binding to the EJB binding list if this is not the first
              // binding for the EJBName. Otherwise, create list and add to the map.
              if (ejbList != null)
              {
                  ejbList.add(binding);
              }
              else
              {
                  ejbList = new LinkedList<EJBInterceptorBinding>();
                  ejbList.add(binding);
                  map.put(ejbName, ejbList);
              }
  
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
              {
                  binding.dump();
              }
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
          {
              Tr.exit(tc, "populateInterceptorBindingMap");
          }
      }