docs: public void findAndProcessExtendedPC(BeanMetaData bmd) throws EJBConfigurationException {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "findAndProcessExtendedPC : " + bmd.j2eeName);
  
          // Get the JPAComponent object that holds the information about
          // container managed persistent units.
          EJBJPAContainer jpaComponent = bmd.container.getEJBRuntime().getEJBJPAContainer();
  
          if (jpaComponent == null) {
              if (isTraceOn && tc.isEntryEnabled())
                  Tr.exit(tc, "findAndProcessExtendedPC : JPA disabled");
              return;
          }
  
          if (bmd.ivJavaColonCompEnvMap == null) {
              if (isTraceOn && tc.isEntryEnabled())
                  Tr.exit(tc, "findAndProcessExtendedPC : java:comp unavailable");
              return;
          }
  
          // Get a collection of all reference/injection 'binding' objects for
          // this EJB and all associated classes. These represent every XML or
          // annotation reference bound into java:comp/env for this component,
          // which includes class, field, and method level annotations.
          Collection<InjectionBinding<?>> injectionBindings = bmd.ivJavaColonCompEnvMap.values();
  
          // Build a set of Persistence Unit Ids for all extended type persistence
          // contexts (@PersistenceContext).
          List<Object> jpaExPcBindingList = new ArrayList<Object>(); // Object will be of type JPAPCtxtInjectionBinding
          bmd.ivPersistenceRefNames = bmd.isStatefulSessionBean() ? new HashSet<String>() : null; // F743-30682
          bmd.ivExPcPuIds = jpaComponent.getExtendedContextPuIds(injectionBindings,
                                                                 bmd.enterpriseBeanName,
                                                                 bmd.ivPersistenceRefNames,
                                                                 jpaExPcBindingList); // F743-30682
  
          if (bmd.ivExPcPuIds.length > 0) {
              // Finding extended PuIds means that this sfsb has a container-managed
              // extended persistence context so we can set the bmd flag.
              bmd.ivHasCMExtendedPersistenceContext = true;
  
              if (isTraceOn && tc.isDebugEnabled())
                  Tr.debug(tc, bmd.j2eeName +
                               " contains ContainerManaged Extended Persistence Contexts: " +
                               Arrays.toString(bmd.ivExPcPuIds));
          }
  
          // Now look for @PersistencUnit(s) which indicates application-managed pc
          // (which are always extended).
          bmd.ivHasAppManagedPersistenceContext = jpaComponent.hasAppManagedPC(injectionBindings,
                                                                               bmd.enterpriseBeanName,
                                                                               bmd.ivPersistenceRefNames); // F743-30682
  
          if (isTraceOn && tc.isDebugEnabled()) {
              if (bmd.ivHasAppManagedPersistenceContext) {
                  Tr.debug(tc, bmd.j2eeName + " contains ApplicationManaged Persistence Contexts");
              }
          }
  
          // Container Managed Extended Persistence Context is only allowed on StatefulSessionBeans
          if (bmd.ivHasCMExtendedPersistenceContext &&
              !bmd.isStatefulSessionBean()) {
              throw new EJBConfigurationException("Extended-scoped persistence unit declared in non-SFSB: " + bmd.j2eeName);
          }
  
          // Scan CMEX entries to make sure there are not two with the same PU but differing TxSyncronicity.
          // The call to scanForTxSynchronizationCollisions() returns a map identifying what type of Tx Synchronicity
          // each Extended PCtx JPAPuId is associated with.
          if (bmd.ivHasCMExtendedPersistenceContext) {
              try {
                  bmd.ivJpaPuIdSTUnsyncSet = jpaComponent.scanForTxSynchronizationCollisions(jpaExPcBindingList);
              } catch (IllegalStateException ise) {
                  throw new EJBConfigurationException(ise);
              }
          }
  
          if (bmd.ivHasCMExtendedPersistenceContext ||
              bmd.ivHasAppManagedPersistenceContext) {
              // d460432
              // SFSB failover is not supported with Extended-scoped Persistence Context   //d448832
              if (bmd.ivSFSBFailover) {
                  Tr.error(tc, "SFSB_FAILOVER_NOT_ALLOWED_WITH_EXTEND_PERSIST_CNTX_CNTR0156E",
                           new Object[] { bmd.enterpriseBeanName, bmd._moduleMetaData.ivName });
                  throw new EJBConfigurationException("Bean: " + bmd.enterpriseBeanName + " in module: " + bmd._moduleMetaData.ivName + " is configured " +
                                                      "for both SFSB failover and extended-scope persistence context support.  This is a configuration conflict.");
              }
  
              // The ActivationPolicy must be "Once" for SFSBs with extendedPC since we will not be able to
              // passivate SFSB's with extendedPC since the EntityManager may not be serializable.
              // This will override whatever was set back in setActivationLoadPolicy().
  
              if (bmd.activationPolicy != BeanMetaData.ACTIVATION_POLICY_ONCE) {
                  String policyName = (bmd.activationPolicy == BeanMetaData.ACTIVATION_POLICY_TRANSACTION) ? "TRANSACTION" : "ACTIVITY_SESSION";
                  Tr.warning(tc, "STATEFUL_PERSISTENCE_CONTEXT_ACTIVATE_ONCE_CNTR0175W",
                             new Object[] { bmd.j2eeName.getComponent(),
                                            bmd.j2eeName.getModule(),
                                            bmd.j2eeName.getApplication(),
                                            policyName }); // LIDB441.5 d479669
  
                  bmd.sessionActivateTran = false;
                  bmd.sessionActivateSession = false;
                  bmd.activationPolicy = BeanMetaData.ACTIVATION_POLICY_ONCE;
  
              }
  
          } // if (bmd.ivHasExtendedPersistenceContext)
  
          if (isTraceOn && tc.isEntryEnabled()) {
              Tr.exit(tc, "findAndProcessExtendedPC : " + " CMExtendedPC =  " +
                          bmd.ivHasCMExtendedPersistenceContext + ", AppManagedPC = " +
                          bmd.ivHasAppManagedPersistenceContext);
          }
      }