void abc<U, V>() where U : struct, IFoo where V : IFoo<U> {}
delegate void F<U>(U u) where U : class, IFoo<Bar>;
class Foo<T> where T : IFoo<int> {}
readonly struct Foo<T> where T : unmanaged {}

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

[
	["return-type", [
		["keyword", "void"]
	]],
	["generic-method", [
		["function", "abc"],
		["generic", [
			["punctuation", "<"],
			"U",
			["punctuation", ","],
			" V",
			["punctuation", ">"]
		]]
	]],
	["punctuation", "("],
	["punctuation", ")"],
	["keyword", "where"],
	["class-name", "U"],
	["punctuation", ":"],
	["type-list", [
		["keyword", "struct"],
		["punctuation", ","],
		["class-name", [
			"IFoo"
		]]
	]],
	["keyword", "where"],
	["class-name", "V"],
	["punctuation", ":"],
	["type-list", [
		["class-name", [
			"IFoo",
			["punctuation", "<"],
			"U",
			["punctuation", ">"]
		]]
	]],
	["punctuation", "{"],
	["punctuation", "}"],

	["keyword", "delegate"],
	["return-type", [
		["keyword", "void"]
	]],
	["generic-method", [
		["function", "F"],
		["generic", [
			["punctuation", "<"],
			"U",
			["punctuation", ">"]
		]]
	]],
	["punctuation", "("],
	["class-name", [
		"U"
	]],
	" u",
	["punctuation", ")"],
	["keyword", "where"],
	["class-name", "U"],
	["punctuation", ":"],
	["type-list", [
		["keyword", "class"],
		["punctuation", ","],
		["class-name", [
			"IFoo",
			["punctuation", "<"],
			"Bar",
			["punctuation", ">"]
		]]
	]],
	["punctuation", ";"],

	["keyword", "class"],
	["class-name", [
		"Foo",
		["punctuation", "<"],
		"T",
		["punctuation", ">"]
	]],
	["keyword", "where"],
	["class-name", "T"],
	["punctuation", ":"],
	["type-list", [
		["class-name", [
			"IFoo",
			["punctuation", "<"],
			["keyword", "int"],
			["punctuation", ">"]
		]]
	]],
	["punctuation", "{"],
	["punctuation", "}"],

	["keyword", "readonly"],
	["keyword", "struct"],
	["class-name", [
		"Foo",
		["punctuation", "<"],
		"T",
		["punctuation", ">"]
	]],
	["keyword", "where"],
	["class-name", "T"],
	["punctuation", ":"],
	["type-list", [
		["keyword", "unmanaged"]
	]],
	["punctuation", "{"],
	["punctuation", "}"]
]

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

Checks for class names and keywords in generic constraints.
