Refactor the CSharpNullable assignment code to be a little easier to read (Honestly I don't like it when an if expression get really long and complicated).
Handle the case where '?' is actually a ternary operator.
Fixes: #58067
https://github.com/llvm/llvm-project/issues/58067
Even if there are more negations, I can read this better.