$"A{new List<string>{$"B{"{C}"}D"}.First()}E"
... was valid C#.This means that a C# compiler can't start with a simple tokenizing loop. That compiler phase would have to keep track of state in a stack, recording what each } character means while its still looping through code character-by-character.
Now we're adding {{ and }} into the equation. Yay.