code: function processTag(item, profile, level) {
  		if (!item.parent)
  			// looks like it's root element
  			return item;
  		
  		var abbrUtils = require('abbreviationUtils');
  		var utils = require('utils');
  		
  		var attrs = makeAttributesString(item, profile);
  		var cursor = profile.cursor();
  		var isUnary = abbrUtils.isUnary(item);
  		var selfClosing = profile.self_closing_tag && isUnary ? '/' : '';
  		var start= '';
  			
  		// define tag name
  		var tagName = '%' + profile.tagName(item.name());
  		if (tagName.toLowerCase() == '%div' && attrs && attrs.indexOf('{') == -1)
  			// omit div tag
  			tagName = '';
  			
  		item.end = '';
  		start = tagName + attrs + selfClosing + ' ';
  		
  		var placeholder = '%s';
  		// We can't just replace placeholder with new value because
  		// JavaScript will treat double $ character as a single one, assuming
  		// we're using RegExp literal.
  		item.start = utils.replaceSubstring(item.start, start, item.start.indexOf(placeholder), placeholder);
  		
  		if (!item.children.length && !isUnary)
  			item.start += cursor;
  		
  		return item;
  	}
docs: Processes element with <code>tag</code> type
  @param {AbbreviationNode} item
  @param {OutputProfile} profile
  @param {Number} level Depth level