docs: function calculateCacheKey(prefix, _parts, values) {
      var parts = _parts || [];
      var suffixes = '';
      for (var i = 0, len = parts.length; i < len; ++i) {
        var part = parts[i];
        var cacheValuePrefix = _calculateCacheValuePrefix(prefix, part);
        var value;
        if (values) {
          if (cacheValuePrefix && cacheValuePrefix in values) {
            var partRemovedPrefix = part.indexOf(cacheValuePrefix) === 0 ? part.substr(cacheValuePrefix.length + 1) : part;
            value = _emberMetalProperty_get.get(values[cacheValuePrefix], partRemovedPrefix);
          } else {
            value = _emberMetalProperty_get.get(values, part);
          }
        }
        suffixes += '::' + part + ':' + value;
      }
      return prefix + suffixes.replace(ALL_PERIODS_REGEX, '-');
    }