whole_func_string: function (json, delimiter) {
    var result = [];
    var recurse = function (cur, prop) {
      for (var key in cur) {
        if (cur.hasOwnProperty(key)) {
          var item = cur[key];
          result.push({
            match: prop ? prop + delimiter + key : key,
            replacement: item,
            expression: false
          });
          // deep scan
          if (typeof item === 'object') {
            recurse(item, prop ? prop + delimiter + key : key);
          }
        }
      }
    };
    recurse(json);
    return result;
  }
func_code_string: function (json, delimiter) {
    var result = [];
    var recurse = function (cur, prop) {
      for (var key in cur) {
        if (cur.hasOwnProperty(key)) {
          var item = cur[key];
          result.push({
            match: prop ? prop + delimiter + key : key,
            replacement: item,
            expression: false
          });
          // deep scan
          if (typeof item === 'object') {
            recurse(item, prop ? prop + delimiter + key : key);
          }
        }
      }
    };
    recurse(json);
    return result;
  }
func_documentation_string: native json support