Diferença entre CallSessionContext, ThreadLocalSessionContext e ThreadStaticSessionContext

A partir deocumentação @NHibernate, isso não explica muito.

Qual é a diferença entre esses três?

Em que situação um desses contextos é mais preferível que os outro

P.S.ThreadLocalSessionContext não existe na documentação, mas existe em NHibernate dll.

questionAnswers(1)

yourAnswerToTheQuestion