docs: function (property) {
  
                      this.factory.chainCache = this.factory.chainCache || {};
  
                      if (this.factory.chainCache[property]) {
                          return this.factory.chainCache[property];
                      }
  
                      var ret = this[property],
                          base = this.base;
  
                      while (base) {
                          var baseValue = base[property];
                          for (var key in baseValue) {
                              if (baseValue.hasOwnProperty(key)) {
                                  if (_.isUndefined(ret[key])) {
                                      ret[key] = baseValue[key];
                                  }
                              }
                          }
  
                          base = base.base;
                      }
  
                      // cache the chain
                      this.factory.chainCache[property] = ret;
  
                      return ret;
                  }