code: function sanitizeFunctionCall(tokens, start) {
          var parenDepth = 1, end = start + 1, n = tokens.length;
          while (end < n && parenDepth) {
            var token = tokens[end++];
            // Decrement if we see a close parenthesis, and increment if we
            // see a function.  Since url(...) are whole tokens, they will not
            // affect the token scanning.
            parenDepth += (token === ')' ? -1 : /^[^"']*\($/.test(token));
          }
          // Allow error-recovery from unclosed functions by ignoring the call and
          // so allowing resumption at the next ';'.
          if (!parenDepth) {
            var fnToken = tokens[start].toLowerCase();
            var bareFnToken = withoutVendorPrefix(fnToken);
            // Cut out the originals, so the caller can step by one token.
            var fnTokens = tokens.splice(start, end - start, '');
            var fns = propertySchema['cssFns'];
            // Look for a function that matches the name.
            for (var i = 0, nFns = fns.length; i < nFns; ++i) {
              if (fns[i].substring(0, bareFnToken.length) == bareFnToken) {
                fnTokens[0] = fnTokens[fnTokens.length - 1] = '';
                // Recurse and sanitize the function parameters.
                sanitize(
                  fns[i],
                  // The actual parameters to the function.
                  fnTokens,
                  opt_naiveUriRewriter, opt_baseUri);
                // Reconstitute the function from its parameter tokens.
                return fnToken + fnTokens.join(' ') + ')';
              }
            }
          }
          return '';
        }
docs: Recurse to apply the appropriate function schema to the function call
  that starts at {@code tokens[start]}.
  @param {Array.<string>} tokens an array of CSS token that is modified
  in place so that all tokens involved in the function call
  (from {@code tokens[start]} to a close parenthesis) are folded to
  one token.
  @param {number} start an index into tokens of a function token like
  {@code 'name('}.
  @return the replacement function or the empty string if the function
  call is not both well-formed and allowed.