code: public Map<String, Map<String, Field>> getPassivatorFields(final BeanMetaData bmd) // d648122
      {
          // Volatile data race.  We do not care if multiple threads do the work
          // since they will all get the same result.
          Map<String, Map<String, Field>> result = bmd.ivPassivatorFields;
          if (result == null)
          {
              result = AccessController.doPrivileged(new PrivilegedAction<Map<String, Map<String, Field>>>()
              {
                  @Override
                  public Map<String, Map<String, Field>> run()
                  {
                      Map<String, Map<String, Field>> allFields = new HashMap<String, Map<String, Field>>();
  
                      collectPassivatorFields(bmd.enterpriseBeanClass, allFields);
                      if (bmd.ivInterceptorMetaData != null)
                      {
                          for (Class<?> klass : bmd.ivInterceptorMetaData.ivInterceptorClasses)
                          {
                              collectPassivatorFields(klass, allFields);
                          }
                      }
  
                      return allFields;
                  }
              });
  
              bmd.ivPassivatorFields = result;
          }
  
          return result;
      }
docs: Get the passivator fields for the specified bean.
  
  @param bmd the bean metadata
  @return the passivator fields