docs: private void resolveBeanDependencies(BeanMetaData bmd, Set<BeanMetaData> used) throws RuntimeWarning {
          boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "resolveBeanDependencies: " + bmd.j2eeName);
  
          // F7434950.CodRev - If another bean depended on this bean, then
          // this bean's dependencies have already been resolved and verified.
          // F743-20281 - Alternatively, this bean's dependencies might have been
          // resolved early, in which case we don't need to resolve them again.
          if (bmd.ivDependsOn != null) {
              return;
          }
          bmd.ivDependsOn = new ArrayList<J2EEName>();
  
          Set<String> dependsOnLinks = ivSingletonDependencies.remove(bmd);
          if (dependsOnLinks == null) {
              return;
          }
  
          for (String dependencyLink : dependsOnLinks) {
              HomeRecord hr = resolveEJBLink(bmd.j2eeName, dependencyLink);
              BeanMetaData dependency = hr.getBeanMetaData();
              J2EEName dependencyName = dependency.j2eeName;
  
              if (!dependency.isSingletonSessionBean()) {
                  Tr.error(
                          tc,
                          "SINGLETON_DEPENDS_ON_NON_SINGLETON_BEAN_CNTR0200E",
                          new Object[] { bmd.j2eeName.getComponent(), bmd.j2eeName.getModule(), dependencyName.getComponent(),
                                  dependencyName.getModule() });
                  throw new RuntimeWarning("CNTR0200E: The " + bmd.j2eeName.getComponent() + " singleton session bean in the "
                          + bmd.j2eeName.getModule() + " module depends on the " + dependencyName.getComponent() + " enterprise bean in the "
                          + dependencyName.getModule() + ", but the target is not a singleton session bean.");
              }
  
              if (!used.add(dependency)) {
                  if (isTraceOn && tc.isDebugEnabled())
                      Tr.debug(tc, "circular dependency from " + dependencyName);
  
                  Tr.error(tc, "SINGLETON_DEPENDS_ON_SELF_CNTR0201E",
                          new Object[] { dependencyName.getComponent(), dependencyName.getModule() });
                  throw new RuntimeWarning("CNTR0201E: The " + dependencyName.getComponent() + " singleton session bean in the "
                          + dependencyName.getModule() + " module directly or indirectly depends on itself.");
              }
  
              bmd.ivDependsOn.add(dependencyName); // d588220
              resolveBeanDependencies(dependency, used);
  
              used.remove(dependency);
          }
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(tc, "resolveBeanDependencies: " + bmd.j2eeName);
      }