code: public <T extends Command> T command(final SecurityContext securityContext, final Class<T> commandType) {
  
  		try {
  
  			final T command          = commandType.newInstance();
  			final Class serviceClass = command.getServiceClass();
  
  			// inject security context first
  			command.setArgument("securityContext", securityContext);
  
  			if (serviceClass != null) {
  
  				// search for already running service..
  				Service service = serviceCache.get(serviceClass);
  				if (service == null) {
  
  					// start service
  					startService(serviceClass);
  
  					// reload service
  					service = serviceCache.get(serviceClass);
  
  					if (serviceClass.equals(NodeService.class)) {
  						logger.debug("(Re-)Started NodeService, (re-)compiling dynamic schema");
  						SchemaService.reloadSchema(new ErrorBuffer(), null);
  					}
  
  				}
  
  				if (service != null) {
  
  					logger.debug("Initializing command ", commandType.getName());
  					service.injectArguments(command);
  				}
  			}
  
  			command.initialized();
  
  			return command;
  
  		} catch (Throwable t) {
  
  			logger.error("Exception while creating command {}", commandType.getName());
  		}
  
  		return null;
  	}
docs: Creates and returns a command of the given <code>type</code>. If a command is
  found, the corresponding service will be discovered and activated.
  
  @param <T>
  @param securityContext
  @param commandType the runtime type of the desired command
  @return the command