docs: public String getLocalImplClassName()
      {
          if (ivLocalInterface == null)
              return null;
  
          if (ivVersion == EJB_1X)
              throw new IllegalStateException("Local interfaces are not supported " +
                                              "in EJB 1.x modules");
  
          // -----------------------------------------------------------------------
          // The component local implementation name was new in EJB 2.x and
          // only modified slightly in EJB 3.0.  The only 3 differences are :
          //
          //   1 - "C" indicating component interface added
          //   2 - beantype shortened for Stateless and Stateful (now SL/SF)
          //   3 - hash code uses modified algorithm, and includes business interfaces
          //
          // The last two differences are pre-calculated in the constructor, and
          // so the code here appears common.
          // -----------------------------------------------------------------------
  
          StringBuffer result = new StringBuffer();
  
          String packageName = packageName(ivLocalInterface);
          if (packageName != null) {
              result.append(packageName);
              result.append('.');
          }
  
          result.append(localPrefix); // EJSLocal
  
          if (ivVersion >= EJB_3X)
              result.append("C"); // Component interface
  
          result.append(ivBeanType); // SL/SF/BMP/CMP, etc.
          result.append(ivBeanName); // First 32 characters
          result.append('_');
          result.append(ivHashSuffix); // 8 digit hashcode
  
          return result.toString();
      }