docs: public void addHome(BeanMetaData bmd) // F743-26072
      throws RemoteException
      {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "addHome : " + bmd.j2eeName);
  
          if (homesByName.get(bmd.j2eeName) != null) {
              throw new DuplicateHomeNameException(bmd.j2eeName.toString());
          }
  
          homesByName.put(bmd.j2eeName, bmd.homeRecord); // d366845.3
  
          J2EEName j2eeName = bmd.j2eeName;
          String application = j2eeName.getApplication();
          AppLinkData linkData;
  
          // F743-26072 - Use AppLinkData
          synchronized (ivAppLinkData)
          {
              linkData = ivAppLinkData.get(application);
              if (linkData == null)
              {
                  if (isTraceOn && tc.isEntryEnabled())
                      Tr.debug(tc, "adding application link data for " + application);
  
                  linkData = new AppLinkData();
                  ivAppLinkData.put(application, linkData);
              }
          }
  
          updateAppLinkData(linkData, true, j2eeName, bmd);
  
          // For version cable modules, the serialized BeanId will contain the
          // unversioned (or base) name, so a map is created from unversioned to
          // active to enable properly routing incoming requests.             F54184
          if (bmd._moduleMetaData.isVersionedModule())
          {
              EJBModuleMetaDataImpl mmd = bmd._moduleMetaData;
              bmd.ivUnversionedJ2eeName = j2eeNameFactory.create(mmd.ivVersionedAppBaseName,
                                                                 mmd.ivVersionedModuleBaseName,
                                                                 j2eeName.getComponent());
              if (isTraceOn && tc.isDebugEnabled())
                  Tr.debug(tc, "Versioned Mapping Added : " + bmd.ivUnversionedJ2eeName + " -> " + j2eeName);
              J2EEName dupBaseName = ivVersionedModuleNames.put(bmd.ivUnversionedJ2eeName, j2eeName);
              if (dupBaseName != null) // F54184.2
              {
                  ivVersionedModuleNames.put(bmd.ivUnversionedJ2eeName, dupBaseName);
                  throw new DuplicateHomeNameException("Base Name : " + bmd.ivUnversionedJ2eeName);
              }
          }
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(tc, "addHome");
      }