What exactly does the following mean?

PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(button1);

I have an idea but wouldn't mind an explanation please, the bit that's throwing me is the fact that the class PropertyDescriptorCollection is assigned, binded, set to a new class altogether being TypeDescriptor. I didn't think this was possible without a cast?

Cheers