docs: function cleanupStringPrototype() {
  	const customGetters = {}; const customProps = {}; const s = ""; let key;
  
  	for (key in s) {
  		if (!s.hasOwnProperty(key)) {
  			const getter = String.prototype.__lookupGetter__(key);
  			if (typeof getter === "function") {
  				customGetters[key] = getter;
  			} else {
  				customProps[key] = String.prototype[key];
  			}
  			if (typeof Reflect !== "undefined") {
  				Reflect.deleteProperty(String.prototype, key);
  			} else {
  				delete String.prototype[key];
  			}
  		}
  	}
  
  	return function restore() {
  		for (key in customGetters) {
  			if (customGetters.hasOwnProperty(key)) {
  				String.prototype.__defineGetter__(key, customGetters[key]);
  			}
  		}
  		for (key in customProps) {
  			if (customProps.hasOwnProperty(key)) {
  				// eslint-disable-next-line no-extend-native
  				String.prototype[key] = customProps[key];
  			}
  		}
  	};
  }