/**
  * The main method that creates new instances in a separate context.
  *
  * @param \AppserverIo\Psr\Application\ApplicationInterface         $application          The application instance to register the class loader with
  * @param \AppserverIo\Appserver\Core\Api\Node\ManagerNodeInterface $managerConfiguration The manager configuration
  *
  * @return void
  */
 public static function visit(ApplicationInterface $application, ManagerNodeInterface $managerConfiguration)
 {
     // create the initial context instance
     $initialContext = new NamingContext();
     $initialContext->injectApplication($application);
     // initialize the stackable storage
     $data = new StackableStorage();
     $servlets = new StackableStorage();
     $initParameters = new StackableStorage();
     $servletMappings = new GenericStackable();
     $securedUrlConfigs = new StackableStorage();
     $sessionParameters = new StackableStorage();
     // initialize the servlet locator
     $servletLocator = new ServletLocator();
     // initialize the servlet manager
     $servletManager = new ServletManager();
     $servletManager->injectData($data);
     $servletManager->injectServlets($servlets);
     $servletManager->injectApplication($application);
     $servletManager->injectInitialContext($initialContext);
     $servletManager->injectInitParameters($initParameters);
     $servletManager->injectResourceLocator($servletLocator);
     $servletManager->injectServletMappings($servletMappings);
     $servletManager->injectSecuredUrlConfigs($securedUrlConfigs);
     $servletManager->injectSessionParameters($sessionParameters);
     $servletManager->injectDirectories($managerConfiguration->getDirectories());
     // attach the instance
     $application->addManager($servletManager, $managerConfiguration);
 }