`foo bar`
`foo
bar`
`40+2=${40+2}`
`${foo()}`
`\${foo}${bar}`
"foo `a` `b` `c` `d` bar"
"test // test" `template`

console.log(`This is ${it.with({ type: false })}!`)
`${ {foo:'bar'}.foo }`

----------------------------------------------------

[
	["template-string", [
		["template-punctuation", "`"],
		["string", "foo bar"],
		["template-punctuation", "`"]
	]],

	["template-string", [
		["template-punctuation", "`"],
		["string", "foo\r\nbar"],
		["template-punctuation", "`"]
	]],

	["template-string", [
		["template-punctuation", "`"],
		["string", "40+2="],
		["interpolation", [
			["interpolation-punctuation", "${"],
			["number", "40"],
			["operator", "+"],
			["number", "2"],
			["interpolation-punctuation", "}"]
		]],
		["template-punctuation", "`"]
	]],

	["template-string", [
		["template-punctuation", "`"],
		["interpolation", [
			["interpolation-punctuation", "${"],
			["function", "foo"],
			["punctuation", "("],
			["punctuation", ")"],
			["interpolation-punctuation", "}"]
		]],
		["template-punctuation", "`"]
	]],

	["template-string", [
		["template-punctuation", "`"],
		["string", "\\${foo}"],
		["interpolation", [
			["interpolation-punctuation", "${"],
			"bar",
			["interpolation-punctuation", "}"]
		]],
		["template-punctuation", "`"]
	]],

	["string", "\"foo `a` `b` `c` `d` bar\""],

	["string", "\"test // test\""],
	["template-string", [
		["template-punctuation", "`"],
		["string", "template"],
		["template-punctuation", "`"]
	]],

	"\r\n\r\nconsole",
	["punctuation", "."],
	["function", "log"],
	["punctuation", "("],
	["template-string", [
		["template-punctuation", "`"],
		["string", "This is "],
		["interpolation", [
			["interpolation-punctuation", "${"],
			"it",
			["punctuation", "."],
			["function", "with"],
			["punctuation", "("],
			["punctuation", "{"],
			["literal-property", "type"],
			["operator", ":"],
			["boolean", "false"],
			["punctuation", "}"],
			["punctuation", ")"],
			["interpolation-punctuation", "}"]
		]],
		["string", "!"],
		["template-punctuation", "`"]
	]],
	["punctuation", ")"],

	["template-string", [
		["template-punctuation", "`"],
		["interpolation", [
			["interpolation-punctuation", "${"],
			["punctuation", "{"],
			["literal-property", "foo"],
			["operator", ":"],
			["string", "'bar'"],
			["punctuation", "}"],
			["punctuation", "."],
			"foo ",
			["interpolation-punctuation", "}"]
		]],
		["template-punctuation", "`"]
	]]
]

----------------------------------------------------

Checks for single-line and multi-line template strings.
