docs: @SuppressWarnings("unchecked")
  	public void initialize() {
  		Class<? extends Context> context = Singleton.class.getAnnotation(Scope.class).value();
  		install(context);
  		contexts.put(Singleton.class, (Descriptor<? extends Context>) components.get(context).get(0));
  		SingletonContext singleton = new SingletonContext();
  		singleton.put((Descriptor<SingletonContext>) contexts.get(Singleton.class), singleton);
  		instances.put(singleton, contexts.get(Singleton.class));
  		this.singleton = singleton;
  		install(Container.class);
  		Descriptor<Container> container = (Descriptor<Container>) components.get(Container.class).get(0);
  		singleton.put(container, this);
  		instances.put(this, container);
  		context = Application.class.getAnnotation(Scope.class).value();
  		install(context);
  		contexts.put(Application.class, (Descriptor<? extends Context>) components.get(context).get(0));
  		context = Thread.class.getAnnotation(Scope.class).value();
  		install(context);
  		contexts.put(Thread.class, (Descriptor<? extends Context>) components.get(context).get(0));
  		context = Session.class.getAnnotation(Scope.class).value();
  		install(context);
  		contexts.put(Session.class, (Descriptor<? extends Context>) components.get(context).get(0));
  		context = Request.class.getAnnotation(Scope.class).value();
  		install(context);
  		contexts.put(Request.class, (Descriptor<? extends Context>) components.get(context).get(0));
  		context = Prototype.class.getAnnotation(Scope.class).value();
  		install(context);
  		contexts.put(Prototype.class, (Descriptor<? extends Context>) components.get(context).get(0));
  		install(LazyProvider.class);
  		logger.info("Container started");
  	}