docs: function cspSafeGetterFn(key0, key1, key2, key3, key4, fullExp, options) {
    ensureSafeMemberName(key0, fullExp);
    ensureSafeMemberName(key1, fullExp);
    ensureSafeMemberName(key2, fullExp);
    ensureSafeMemberName(key3, fullExp);
    ensureSafeMemberName(key4, fullExp);
  
    return !options.unwrapPromises
        ? function cspSafeGetter(scope, locals) {
            var pathVal = (locals && locals.hasOwnProperty(key0)) ? locals : scope;
  
            if (pathVal === null || pathVal === undefined) return pathVal;
            pathVal = pathVal[key0];
  
            if (!key1 || pathVal === null || pathVal === undefined) return pathVal;
            pathVal = pathVal[key1];
  
            if (!key2 || pathVal === null || pathVal === undefined) return pathVal;
            pathVal = pathVal[key2];
  
            if (!key3 || pathVal === null || pathVal === undefined) return pathVal;
            pathVal = pathVal[key3];
  
            if (!key4 || pathVal === null || pathVal === undefined) return pathVal;
            pathVal = pathVal[key4];
  
            return pathVal;
          }
        : function cspSafePromiseEnabledGetter(scope, locals) {
            var pathVal = (locals && locals.hasOwnProperty(key0)) ? locals : scope,
                promise;
  
            if (pathVal === null || pathVal === undefined) return pathVal;
  
            pathVal = pathVal[key0];
            if (pathVal && pathVal.then) {
              promiseWarning(fullExp);
              if (!("$$v" in pathVal)) {
                promise = pathVal;
                promise.$$v = undefined;
                promise.then(function(val) { promise.$$v = val; });
              }
              pathVal = pathVal.$$v;
            }
            if (!key1 || pathVal === null || pathVal === undefined) return pathVal;
  
            pathVal = pathVal[key1];
            if (pathVal && pathVal.then) {
              promiseWarning(fullExp);
              if (!("$$v" in pathVal)) {
                promise = pathVal;
                promise.$$v = undefined;
                promise.then(function(val) { promise.$$v = val; });
              }
              pathVal = pathVal.$$v;
            }
            if (!key2 || pathVal === null || pathVal === undefined) return pathVal;
  
            pathVal = pathVal[key2];
            if (pathVal && pathVal.then) {
              promiseWarning(fullExp);
              if (!("$$v" in pathVal)) {
                promise = pathVal;
                promise.$$v = undefined;
                promise.then(function(val) { promise.$$v = val; });
              }
              pathVal = pathVal.$$v;
            }
            if (!key3 || pathVal === null || pathVal === undefined) return pathVal;
  
            pathVal = pathVal[key3];
            if (pathVal && pathVal.then) {
              promiseWarning(fullExp);
              if (!("$$v" in pathVal)) {
                promise = pathVal;
                promise.$$v = undefined;
                promise.then(function(val) { promise.$$v = val; });
              }
              pathVal = pathVal.$$v;
            }
            if (!key4 || pathVal === null || pathVal === undefined) return pathVal;
  
            pathVal = pathVal[key4];
            if (pathVal && pathVal.then) {
              promiseWarning(fullExp);
              if (!("$$v" in pathVal)) {
                promise = pathVal;
                promise.$$v = undefined;
                promise.then(function(val) { promise.$$v = val; });
              }
              pathVal = pathVal.$$v;
            }
            return pathVal;
          };
  }