whole_func_string: function process(tree, profile) {
  		if (tree.name)
  			bemParse(tree, profile);
  		
  		var abbrUtils = require('abbreviationUtils');
  		_.each(tree.children, function(item) {
  			process(item, profile);
  			if (!abbrUtils.isSnippet(item) && item.start)
  				shouldRunHtmlFilter = true;
  		});
  		
  		return tree;
  	}
func_code_string: function process(tree, profile) {
  		if (tree.name)
  			bemParse(tree, profile);
  		
  		var abbrUtils = require('abbreviationUtils');
  		_.each(tree.children, function(item) {
  			process(item, profile);
  			if (!abbrUtils.isSnippet(item) && item.start)
  				shouldRunHtmlFilter = true;
  		});
  		
  		return tree;
  	}
func_documentation_string: Recursive function for processing tags, which extends class names
  according to BEM specs: http://bem.github.com/bem-method/pages/beginning/beginning.ru.html
  <br><br>
  It does several things:<br>
  <ul>
  <li>Expands complex class name (according to BEM symbol semantics):
  .block__elem_modifier → .block.block__elem.block__elem_modifier
  </li>
  <li>Inherits block name on child elements:
  .b-block > .__el > .__el → .b-block > .b-block__el > .b-block__el__el
  </li>
  <li>Treats first dash symbol as '__'</li>
  <li>Double underscore (or typographic '–') is also treated as an element
  level lookup, e.g. ____el will search for element definition in parent’s
  parent element:
  .b-block > .__el1 > .____el2 → .b-block > .b-block__el1 > .b-block__el2
  </li>
  </ul>
  
  @param {AbbreviationNode} tree
  @param {Object} profile