It's a confusing one.
protected means "only this class and derived classes".
internal means "only classes in this assembly".
protected internal means "protected OR internal" (any class in the same assembly, or any derived class - even if it is in a different assembly).
i.e. it does not mean "protected AND internal" (only derived classes within the same assembly).