code: function(abbr, syntax, profile, contextNode) {
  			if (!abbr) return '';
  			
  			syntax = syntax || defaultSyntax;
  //			profile = profile || defaultProfile;
  			
  			var filters = r('filters');
  			var parser = r('abbreviationParser');
  			
  			profile = r('profile').get(profile, syntax);
  			r('tabStops').resetTabstopIndex();
  			
  			var data = filters.extractFromAbbreviation(abbr);
  			var outputTree = parser.parse(data[0], {
  				syntax: syntax, 
  				contextNode: contextNode
  			});
  			
  			var filtersList = filters.composeList(syntax, profile, data[1]);
  			filters.apply(outputTree, filtersList, profile);
  			return outputTree.toString();
  		}
docs: The essential function that expands Emmet abbreviation
  @param {String} abbr Abbreviation to parse
  @param {String} syntax Abbreviation's context syntax
  @param {String} profile Output profile (or its name)
  @param {Object} contextNode Contextual node where abbreviation is
  written
  @return {String}