Is this a bug in the Microsoft C# compiler, or does the syntax serve a purpose that I'm not aware of?
class P1
{
    class P2 : P1
    {
        class P3 : P2
        {
            void Foo()
            {
                P3 p3 = this as P2.P3;
                P2 p2 = this as P3.P2;  // ?!?
            }
        };
    };
};
edit: I should mention that it compiles just fine in VS2010.