code: function compileGetter (exp) {
    /* istanbul ignore if */
    if (improperKeywordsRE.test(exp)) {
      console.warn('Avoid using reserved keywords in expression: ' + exp)
    }
    // reset state
    saved.length = 0
    // save strings and object literal keys
    var body = exp
      .replace(saveRE, save)
      .replace(wsRE, '')
    // rewrite all paths
    // pad 1 space here becaue the regex matches 1 extra char
    body = (' ' + body)
      .replace(identRE, rewrite)
      .replace(restoreRE, restore)
    return body.trim()
  }
docs: Rewrite an expression, prefixing all path accessors with
  `this.` and generate getter/setter functions.
  
  @param {String} exp
  @return {Function}