docs: function(source){
      if (!source || (typeof source != 'object' && typeof source != 'function'))
      {
        /** @cut */ basis.dev.warn(this.constructor.className + '.addSource: value should be a dataset instance or to be able to resolve in dataset');
        return;
      }
  
      if (this.hasSource(source))
      {
        /** @cut */ basis.dev.warn(this.constructor.className + '.addSource: value is already in source list');
        return;
      }
  
      var sourceInfo = {
        owner: this,
        source: source,
        adapter: null,
        dataset: null
      };
  
      this.sourceValues_.push(sourceInfo);
      this.updateDataset_.call(sourceInfo, source);
  
      if (this.listen.sourceValue && source instanceof Emitter)
        source.addHandler(this.listen.sourceValue, this);
    }