NH-3675

https://nhibernate.jira.com/browse/NH-3675
Initial implementation with unit tests
No, ++c. It is more optimized and generally preferrable in these loops