code: function(config, widget, parent_view, template, properties) {
  
  		// here we do not need to check if the config is already extended, cause otherwise it would have real class
  		// and it's constructor would be called directly.
  		Lava.extenders[config.extender_type](config);
  
  		if ('class_locator' in config) {
  
  			config['class'] = Lava.schema.widget.DEFAULT_CLASS_LOCATOR_GATEWAY;
  
  		}
  
  		if (Lava.schema.DEBUG && !config['class']) Lava.t("Trying to create a widget without class");
  		var constructor = Lava.ClassManager.getConstructor(config['class'], 'Lava.widget');
  		if (Lava.schema.DEBUG && !constructor) Lava.t("Class not found: " + config['class']);
  		return new constructor(config, widget, parent_view, template, properties);
  
  	}
docs: Behaves like a widget constructor, but accepts raw (unextended) widget config.
  Extends the config and creates the widget instance with the right class. Extension process stores the right
  class in widget config, so next time a widget is constructed - this method is not called.
  
  @param {_cWidget} config
  @param {Lava.widget.Standard} widget
  @param {Lava.view.Abstract} parent_view
  @param {Lava.system.Template} template
  @param {Object} properties
  @returns {Lava.widget.Standard}