Protecting C# from Integer Overflows and Canonicalization Issues