whole_func_string: function(node, offset) {
  			var maxNum = 0;
  			var options = {
  				tabstop: function(data) {
  					var group = parseInt(data.group);
  					if (group > maxNum) maxNum = group;
  						
  					if (data.placeholder)
  						return '${' + (group + offset) + ':' + data.placeholder + '}';
  					else
  						return '${' + (group + offset) + '}';
  				}
  			};
  			
  			_.each(['start', 'end', 'content'], function(p) {
  				node[p] = this.processText(node[p], options);
  			}, this);
  			
  			return maxNum;
  		}
func_code_string: function(node, offset) {
  			var maxNum = 0;
  			var options = {
  				tabstop: function(data) {
  					var group = parseInt(data.group);
  					if (group > maxNum) maxNum = group;
  						
  					if (data.placeholder)
  						return '${' + (group + offset) + ':' + data.placeholder + '}';
  					else
  						return '${' + (group + offset) + '}';
  				}
  			};
  			
  			_.each(['start', 'end', 'content'], function(p) {
  				node[p] = this.processText(node[p], options);
  			}, this);
  			
  			return maxNum;
  		}
func_documentation_string: Upgrades tabstops in output node in order to prevent naming conflicts
  @param {AbbreviationNode} node
  @param {Number} offset Tab index offset
  @returns {Number} Maximum tabstop index in element