Refactor: move variables that do not change in the loop outside
Refactoring: keep session-wide (like logger and gen options) data in the GSC, do not pass them around separately. Use single role validation facility throughout generation of a single model.
Merge branch 'master' into 3.1/artem/default
Some javadoc to record the comprehension I've got to while reading the code.