code: public static <T extends ControlBean> T instantiate( Class<T> beanClass,
                                                           PropertyMap props,
                                                           ControlBeanContext context,
                                                           String id )
      {
          try
          {
              DiscoverClass discoverer = new DiscoverClass();
              Class factoryClass = discoverer.find( ControlFactory.class, DEFAULT_FACTORY_CLASS );
              ControlFactory factory = (ControlFactory)factoryClass.newInstance();
              return factory.instantiate( beanClass, props, context, id );
          }
          catch ( Exception e )
          {
              throw new ControlException( "Exception creating ControlBean", e );
          }
      }
docs: Factory method for instantiating controls.
  
  @param beanClass the ControlBean class to instantiate
  @param props an optional PropertyMap containing initial property values for the control.
  may be null.
  @param context the ControlBeanContext that will nest the created control.  If null, the
  thread-local context (possibly none) will be used.
  @param id a unique ID for the created control.  If null, an ID will be auto-generated.
  @return an instance of the specified ControlBean.