function restoreTmpl (resetters, paths, hasWildcards) {
  const dynamicReset = hasWildcards === true ? `
    const keys = Object.keys(secret)
    const len = keys.length
    for (var i = len - 1; i >= ${paths.length}; i--) {
      const k = keys[i]
      const o = secret[k]
      if (o.flat === true) this.groupRestore(o)
      else this.nestedRestore(o)
      secret[k] = null
    }
  ` : '';

  return `
    const secret = this.secret
    ${dynamicReset}
    ${resetters}
    return o
  `
}
Creates the body of the restore function

Restoration of the redacted object happens
backwards, in reverse order of redactions,
so that repeated redactions on the same object
property can be eventually rolled back to the
original value.

This way dynamic redactions are restored first,
starting from the last one working backwards and
followed by the static ones.

@returns {string} the body of the restore function