code: function (template, new_previous_template, current_templates) {
  
  		var current_previous_index = this._current_templates.indexOf(template) - 1,
  			current_previous_template = null;
  
  		if (Lava.schema.DEBUG && current_previous_index == -2) Lava.t();
  
  		// skip removed templates
  		while (current_previous_index > -1 && current_templates.indexOf(this._current_templates[current_previous_index]) == -1) {
  			current_previous_index--;
  		}
  
  		if (current_previous_index > -1) {
  			current_previous_template = this._current_templates[current_previous_index];
  		}
  
  		if (new_previous_template != current_previous_template) {
  
  			Firestorm.DOM.moveRegionAfter(
  				this._getEndElement(new_previous_template),
  				this._getStartElement(template),
  				this._getEndElement(template)
  			);
  
  			// move it in local _current_templates array
  			Firestorm.Array.exclude(this._current_templates, template);
  
  			var previous_index = this._current_templates.indexOf(new_previous_template);
  			if (Lava.schema.DEBUG && previous_index == -1) Lava.t();
  			this._current_templates.splice(previous_index + 1, 0, template);
  
  		}
  
  	}
docs: Move `template` after `previous_template` (both are in DOM)
  @param {Lava.system.Template} template
  @param {Lava.system.Template} new_previous_template
  @param {Array.<Lava.system.Template>} current_templates