whole_func_string: function processTag(item, profile, level) {
  		item.start = item.end = placeholder;
  		var utils = require('utils');
  		var abbrUtils = require('abbreviationUtils');
  		var isUnary = abbrUtils.isUnary(item);
  		var nl = utils.getNewline();
  		var indent = getIndentation(item);
  			
  		// formatting output
  		if (profile.tag_nl !== false) {
  			var forceNl = profile.tag_nl === true && (profile.tag_nl_leaf || item.children.length);
  			if (!forceNl) {
  				forceNl = _.include(prefs.getArray('format.forceIndentationForTags') || [], item.name());
  			}
  			
  			// formatting block-level elements
  			if (!item.isTextNode()) {
  				if (shouldAddLineBreak(item, profile)) {
  					// - do not indent the very first element
  					// - do not indent first child of a snippet
  					if (!isVeryFirstChild(item) && (!abbrUtils.isSnippet(item.parent) || item.index()))
  						item.start = nl + item.start;
  						
  					if (abbrUtils.hasBlockChildren(item) || shouldBreakChild(item, profile) || (forceNl && !isUnary))
  						item.end = nl + item.end;
  						
  					if (abbrUtils.hasTagsInContent(item) || (forceNl && !item.children.length && !isUnary))
  						item.start += nl + indent;
  				} else if (abbrUtils.isInline(item) && hasBlockSibling(item) && !isVeryFirstChild(item)) {
  					item.start = nl + item.start;
  				} else if (abbrUtils.isInline(item) && shouldBreakInsideInline(item, profile)) {
  					item.end = nl + item.end;
  				}
  				
  				item.padding = indent;
  			}
  		}
  		
  		return item;
  	}
func_code_string: function processTag(item, profile, level) {
  		item.start = item.end = placeholder;
  		var utils = require('utils');
  		var abbrUtils = require('abbreviationUtils');
  		var isUnary = abbrUtils.isUnary(item);
  		var nl = utils.getNewline();
  		var indent = getIndentation(item);
  			
  		// formatting output
  		if (profile.tag_nl !== false) {
  			var forceNl = profile.tag_nl === true && (profile.tag_nl_leaf || item.children.length);
  			if (!forceNl) {
  				forceNl = _.include(prefs.getArray('format.forceIndentationForTags') || [], item.name());
  			}
  			
  			// formatting block-level elements
  			if (!item.isTextNode()) {
  				if (shouldAddLineBreak(item, profile)) {
  					// - do not indent the very first element
  					// - do not indent first child of a snippet
  					if (!isVeryFirstChild(item) && (!abbrUtils.isSnippet(item.parent) || item.index()))
  						item.start = nl + item.start;
  						
  					if (abbrUtils.hasBlockChildren(item) || shouldBreakChild(item, profile) || (forceNl && !isUnary))
  						item.end = nl + item.end;
  						
  					if (abbrUtils.hasTagsInContent(item) || (forceNl && !item.children.length && !isUnary))
  						item.start += nl + indent;
  				} else if (abbrUtils.isInline(item) && hasBlockSibling(item) && !isVeryFirstChild(item)) {
  					item.start = nl + item.start;
  				} else if (abbrUtils.isInline(item) && shouldBreakInsideInline(item, profile)) {
  					item.end = nl + item.end;
  				}
  				
  				item.padding = indent;
  			}
  		}
  		
  		return item;
  	}
func_documentation_string: Processes element with <code>tag</code> type
  @param {AbbreviationNode} item
  @param {OutputProfile} profile
  @param {Number} level Depth level