whole_func_string: function(config) {
              var instanceConfig = config,
                  configNameCache = Ext.Class.configNameCache,
                  defaultConfig = new this.configClass(),
                  defaultConfigList = this.initConfigList,
                  hasConfig = this.configMap,
                  nameMap, i, ln, name, initializedName;
  
              this.initConfig = Ext.emptyFn;
  
              this.initialConfig = instanceConfig || {};
  
              this.config = config = (instanceConfig) ? Ext.merge(defaultConfig, config) : defaultConfig;
  
              if (instanceConfig) {
                  defaultConfigList = defaultConfigList.slice();
  
                  for (name in instanceConfig) {
                      if (hasConfig[name]) {
                          if (instanceConfig[name] !== null) {
                              defaultConfigList.push(name);
                              this[configNameCache[name].initialized] = false;
                          }
                      }
                  }
              }
  
              for (i = 0,ln = defaultConfigList.length; i < ln; i++) {
                  name = defaultConfigList[i];
                  nameMap = configNameCache[name];
                  initializedName = nameMap.initialized;
  
                  if (!this[initializedName]) {
                      this[initializedName] = true;
                      this[nameMap.set].call(this, config[name]);
                  }
              }
  
              return this;
          }
func_code_string: function(config) {
              var instanceConfig = config,
                  configNameCache = Ext.Class.configNameCache,
                  defaultConfig = new this.configClass(),
                  defaultConfigList = this.initConfigList,
                  hasConfig = this.configMap,
                  nameMap, i, ln, name, initializedName;
  
              this.initConfig = Ext.emptyFn;
  
              this.initialConfig = instanceConfig || {};
  
              this.config = config = (instanceConfig) ? Ext.merge(defaultConfig, config) : defaultConfig;
  
              if (instanceConfig) {
                  defaultConfigList = defaultConfigList.slice();
  
                  for (name in instanceConfig) {
                      if (hasConfig[name]) {
                          if (instanceConfig[name] !== null) {
                              defaultConfigList.push(name);
                              this[configNameCache[name].initialized] = false;
                          }
                      }
                  }
              }
  
              for (i = 0,ln = defaultConfigList.length; i < ln; i++) {
                  name = defaultConfigList[i];
                  nameMap = configNameCache[name];
                  initializedName = nameMap.initialized;
  
                  if (!this[initializedName]) {
                      this[initializedName] = true;
                      this[nameMap.set].call(this, config[name]);
                  }
              }
  
              return this;
          }
func_documentation_string: <feature classSystem.config> 
  Initialize configuration for this class. a typical example:
  
  Ext.define('My.awesome.Class', {
  // The default config
  config: {
  name: 'Awesome',
  isAwesome: true
  },
  
  constructor: function(config) {
  this.initConfig(config);
  }
  });
  
  var awesome = new My.awesome.Class({
  name: 'Super Awesome'
  });
  
  alert(awesome.getName()); // 'Super Awesome'
  
  @protected
  @param {Object} config
  @return {Ext.Base} this