Question: what is the difference between internal and protected internal?
Answer: internal: The type or member can be accessed by any code in the same assembly, but not from another assembly. protected internal: The type or member can be accessed by any code in the assembly in which it's declared, or from within a derived class in another assembly.