docs: public List<J2EEName> resolveBeanDependencies(BeanMetaData bmd) throws RuntimeWarning { // F743-20281
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "resolveBeanDependencies: " + bmd.j2eeName);
  
          // This method might be called "early" prior to finishStarting.
          // Because checkIfEJBWorkAllowed must be called before this method, we
          // know that this is the startup thread in that case, which means we do
          // not need synchronization.
          //
          // As an known quirk, the ejb-link resolution process depends on
          // knowing the full set of beans in the application (not module) for
          // cross-module dependencies. Since it's possible that there are
          // remaining unstarted EJB modules, resolveEJBLink will make the wrong
          // decision in the following scenario:
          //
          // ejb1.jar: @Singleton public class A { }
          // ejb2.jar: @Singleton @DependsOn({"A"}) public class B { }
          // test.war: // ServletContextListener uses ejb2.jar#B
          // ejb3.jar: @Singleton public class A { }
          //
          // Normally, if ejb2.jar#B were accessed after the application is fully
          // started, the "A" dependency would fail as ambiguous. However, when
          // test.war is started, only the ejb1.jar#A bean is known, so the
          // dependency will be resolved.
          if (bmd.ivDependsOn == null && ivSingletonDependencies != null) {
              Set<BeanMetaData> used = new HashSet<BeanMetaData>();
              used.add(bmd);
  
              try {
                  resolveBeanDependencies(bmd, used);
              } catch (RuntimeWarning ex) {
                  // Save the exception to fail later in resolveDependencies
                  // during finishStarting.
                  ivSingletonDependencyResolutionException = ex;
                  if (isTraceOn && tc.isEntryEnabled())
                      Tr.exit(tc, "resolveBeanDependencies: " + ex);
                  throw ex;
              }
          }
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(tc, "resolveBeanDependencies: " + bmd.ivDependsOn);
          return bmd.ivDependsOn;
      }