Here's code example:
ReSharper shows "Type cast is redundant" at line Console.WriteLine((A)b1 == (A)b2); but this isn't true. Operator here are static methods with different realization in classes A and B, so the strings
Console.WriteLine(b1 == b2);
Console.WriteLine((A)b1 == (A)b2);
produces different actions as you can see by running the code (cs file attached).