code: function process(tree, profile) {
  		if (tree.name) {
  			bemParse(tree, profile);
  		}
  		
  		tree.children.forEach(function(item) {
  			process(item, profile);
  			if (!abbreviationUtils.isSnippet(item) && item.start) {
  				shouldRunHtmlFilter = true;
  			}
  		});
  		
  		return tree;
  	}
docs: 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