_nestLevels(level_template = '', level = 1) {
        level_template += '(';
        level_template += '#' + level + '#';
        if (level < this._max_level)
            level_template = this._nestLevels(level_template, level + 1);
        level_template += ')';

        return level_template;
    }
/**
     * create a template of nested levels to be replaced by the actual conditions 
     * for each level
     * @param {string} level_template 
     * @param {number} level 
     */
create a template of nested levels to be replaced by the actual conditions
for each level
@param {string} level_template
@param {number} level
create a template of nested levels to be replaced by the actual conditions for each level @param { string } level_template @param { number } level
_nestLevels(level_template = '', level = 1) {
        level_template += '(';
        level_template += '#' + level + '#';
        if (level < this._max_level)
            level_template = this._nestLevels(level_template, level + 1);
        level_template += ')';
        return level_template;
    }
_nestLevels ( level_template = '' , level = 1 ) { level_template += '(' ; level_template += '#' + level + '#' ; if ( level < this . _max_level ) level_template = this . _nestLevels ( level_template , level + 1 ) ; level_template += ')' ; return level_template ; }
create a template of nested levels to be replaced by the actual conditions
 for each level
 @param {string} level_template
 @param {number} level
create a template of nested levels to be replaced by the actual conditions for each level @param { string } level_template @param { number } level