code: public static void initializeClient( ClassLoader cl, Object client, ControlBeanContext cbc )
          throws ClassNotFoundException
      {
          Class clientClass = client.getClass();
          String clientName = clientClass.getName();
  
          if ( cl == null )
              cl = clientClass.getClassLoader();
  
          String initName = clientName + "ClientInitializer";
          Class initClass = cl.loadClass( initName );
  
          try
          {
              Method m = initClass.getMethod( "initialize", ControlBeanContext.class, clientClass );
              m.invoke(null, cbc, client );
          }
          catch ( Throwable e )
          {
              if ( e instanceof InvocationTargetException )
              {
                  if ( e.getCause() != null )
                  {
                      e = e.getCause();
                  }
              }
                  
              throw new ControlException( "Exception trying to run client initializer: " + e.getClass().getName() + ", " +
                                          e.getMessage(), e );
          }
      }
docs: Helper method for initializing instances of declarative control clients (objects that use controls via @Control
  and @EventHandler annotations).  This method runs the client-specific generated ClientInitializer class to do
  its initialization work.
  
  @param cl the classloader used to load the ClientInitializer.  If null, defaults to the classloader used to
  load the client object being initialized.
  @param client the client object being initialized.
  @param cbc the ControlBeanContext to be associated with the client object (that will nest the controls the client
  defines).  If null, the thread-local context (possibly none) will be used.
  @throws ControlException
  @throws ClassNotFoundException