 		// identifier
 		case .identifier:
 			return [
-					[
-									CharacterSet.letters.terminal(token: T._transient),
-									"_".terminal(token: T._transient),
-									].oneOf(token: T._transient),
-					[
-									CharacterSet.letters.terminal(token: T._transient),
-									CharacterSet.decimalDigits.terminal(token: T._transient),
-									"_".terminal(token: T._transient),
-									].oneOf(token: T._transient).repeated(min: 0, producing: T._transient),
+					CharacterSet.letters.union(CharacterSet(charactersIn: "_")).terminal(token: T._transient),
+					CharacterSet.letters.union(CharacterSet.decimalDigits).union(CharacterSet(charactersIn: "_")).terminal(token: T._transient).repeated(min: 0, producing: T._transient),
 					].sequence(token: T.identifier, annotations: annotations.isEmpty ? [ : ] : annotations)
 		// element
 		case .element:
-			guard let cachedRule = STLR.leftHandRecursiveRules[self.rawValue] else {
-				// Create recursive shell
-				let recursiveRule = RecursiveRule()
-				STLR.leftHandRecursiveRules[self.rawValue] = recursiveRule
+			guard let cachedRule = T.leftHandRecursiveRules[self.rawValue] else {
+				// Create recursive shell
+				let recursiveRule = RecursiveRule()
+				T.leftHandRecursiveRules[self.rawValue] = recursiveRule
 				// Create the rule we would normally generate
 				let rule = [
 					T.annotations._rule().optional(producing: T._transient),

					].oneOf(token: T.whitespace, annotations: annotations.isEmpty ? [RuleAnnotation.void : RuleAnnotationValue.set] : annotations)
		// ows
		case .ows:
			return T.whitespace._rule().repeated(min: 0, producing: T.ows, annotations: annotations)
		// quantifier
		case .quantifier:
			return ScannerRule.oneOf(token: T.quantifier, ["*", "+", "?", "-"],[ : ].merge(with: annotations))
		// negated
		case .negated:
			return "!".terminal(token: T.negated, annotations: annotations)



	// Color Dictionary
	static var tokenNameColorIndex = ["grammar" : T.grammar.color!]

	// Cache for left-hand recursive rules
	private static var leftHandRecursiveRules = [ Int : Rule ]()
