extend(extension) {
		return Object.freeze(Object.assign(Object.create(this), extension));
	}
Creates a new object with the current object as the prototype and
the specified properties as its own properties.
@param {Object} extension The properties to add to the new object.
@returns {FileContext} A new object with the current object as the prototype
and the specified properties as its own properties.