docs: function(userAgentWrapper) {
              // ----------------------------------------------- early termination
  
              var cacheKey = userAgentWrapper.ua.toLowerCase();
  
              var values;
              if (this._propertiesCache.hasOwnProperty(cacheKey)) {
                  values = this._propertiesCache[cacheKey];
              }
  
              if (values != null) {
                  return values;
              }
  
              // ----------------------------------------------------- computation
  
              values = this._computeProperties(userAgentWrapper);
  
              // ---------------------------------------------------------- output
  
              this._propertiesCache[cacheKey] = values;
              return values;
          }