code: function(config) {
  
  		var parent_config,
  			parent_widget_name;
  
  		if ('extends' in config) {
  
  			parent_widget_name = config['extends'];
  			// returns already extended configs
  			parent_config = Lava.getWidgetConfig(parent_widget_name);
  
  			for (var name in parent_config) {
  
  				if (this._exceptions.indexOf(name) == -1) {
  
  					if (!(name in config)) {
  
  						config[name] = parent_config[name];
  
  					} else if (name in this._widget_config_merged_properties) {
  
  						this[this._widget_config_merged_properties[name]](config, parent_config, name, parent_widget_name);
  
  					}
  
  				}
  
  			}
  
  			// delay merging of storage until storage_schema is merged
  			if ('storage' in parent_config) {
  				if (!('storage' in config)) {
  					config['storage'] = parent_config['storage'];
  				} else {
  					this._mergeStorage(config, parent_config, 'storage', parent_widget_name);
  				}
  			}
  
  		}
  
  		if (Lava.schema.RESOURCES_ENABLED) {
  			this._extendResources(config, parent_config);
  		}
  
  		if (config.real_class && !('class_locator' in config)) {
  
  			config['class'] = Lava.ClassManager.hasConstructor(config.real_class)
  				? config.real_class
  				: 'Lava.widget.' + config.real_class;
  
  		} else {
  
  			config['class'] = null;
  
  		}
  
  		config.is_extended = true;
  
  	}
docs: Extend raw widget config
  @param {_cWidget} config