protected ScopedContainers makeScopedContainers(boolean stateless) {
DefaultPicoContainer appCtnr = new DefaultPicoContainer(new Guarding().wrap(new Caching()), makeLifecycleStrategy(), makeParentContainer(), makeAppComponentMonitor());
Storing sessStoring = new Storing();
DefaultPicoContainer sessCtnr = new DefaultPicoContainer(new Guarding().wrap(sessStoring), makeLifecycleStrategy(), appCtnr, makeSessionComponentMonitor());
Storing reqStoring = new Storing();
DefaultPicoContainer reqCtnr = new DefaultPicoContainer(new Guarding().wrap(addRequestBehaviors(reqStoring)), makeLifecycleStrategy(), sessCtnr, makeRequestComponentMonitor());
ThreadLocalLifecycleState sessionState = new ThreadLocalLifecycleState();
ThreadLocalLifecycleState requestState = new ThreadLocalLifecycleState();
sessCtnr.setLifecycleState(sessionState);
reqCtnr.setLifecycleState(requestState);
return new ScopedContainers(appCtnr, sessCtnr, reqCtnr, sessStoring, reqStoring, sessionState, requestState);
}