code: public EJSHome getHomeAndInitialize() // d648522
      {
          // For performance, use double-checked locking with volatile.
          EJSHome result = (EJSHome) homeInternal; // volatile
          if (result == null)
          {
              EJBModuleMetaDataImpl mmd = bmd._moduleMetaData;
              EJBApplicationMetaData ejbAMD = mmd.getEJBApplicationMetaData();
              ejbAMD.checkIfEJBWorkAllowed(mmd);
  
              // We must lock on an application-wide object because common archive
              // is not thread-safe.
              synchronized (ejbAMD)
              {
                  result = (EJSHome) homeInternal;
                  if (result == null)
                  {
                      // homeInternal is set by EJSContainer.startBean.
                      result = bmd.container.getEJBRuntime().initializeDeferredEJB(this);
                  }
              }
          }
  
          return result;
      }
docs: getHomeAndInitialize() is called to return the <code>EJSHome</code> reference
  stored in this HomeRecord. If this reference is null, then the initialization
  of this EJB has been deferred. In that case the EJB initialization will be triggered
  from this method.
  <p>
  
  @return <code>EJSHome</code> associated with this HomeRecord.