code: protected PlaceManager createPlace (PlaceConfig config, List<PlaceManagerDelegate> delegates,
                                          PreStartupHook hook)
          throws InstantiationException, InvocationException
      {
          PlaceManager pmgr = null;
  
          try {
              // create a place manager using the class supplied in the place config
              pmgr = createPlaceManager(config);
  
              // if we have delegates, inject their dependencies and add them
              if (delegates != null) {
                  for (PlaceManagerDelegate delegate : delegates) {
                      _injector.injectMembers(delegate);
                      pmgr.addDelegate(delegate);
                  }
              }
  
              // let the pmgr know about us and its configuration
              pmgr.init(this, _invmgr, _omgr, selectLocator(config), config);
  
          } catch (Exception e) {
              log.warning(e);
              throw new InstantiationException("Error creating PlaceManager for " + config);
          }
  
          // let the manager abort the whole process if it fails any permissions checks
          String errmsg = pmgr.checkPermissions();
          if (errmsg != null) {
              // give the place manager a chance to clean up after its early initialization process
              pmgr.permissionsFailed();
              throw new InvocationException(errmsg);
          }
  
          // and create and register the place object
          PlaceObject plobj = pmgr.createPlaceObject();
          _omgr.registerObject(plobj);
  
          // stick the manager into our table
          _pmgrs.put(plobj.getOid(), pmgr);
  
          // start the place manager up with the newly created place object
          try {
              if (hook != null) {
                  hook.invoke(pmgr);
              }
              pmgr.startup(plobj);
  
          } catch (Exception e) {
              log.warning("Error starting place manager", "obj", plobj, "pmgr", pmgr, e);
          }
  
          return pmgr;
      }
docs: Creates a place manager using the supplied config, injects dependencies into and registers
  the supplied list of delegates, runs the supplied pre-startup hook and finally returns it.