 key (or language id) of the parent
					 * @param before The key to insert before. If not provided, the function appends instead.
					 * @param insert Object with the key/value pairs to insert
					 * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted.
					 */
					insertBefore: function (inside, before, insert, root) {
						root = root || _.languages;
						var grammar = root[inside];

						if (arguments.length == 2) {
							insert = arguments[1];

							fo