protected internal modifier meaning "and" and not "or"
Within big projects/dlls it is nice, to restrict several methods to very limited use.
For specifying: "this is not part of the public API", the specifier 'internal' can be used. But there is not much tuning: you can either allow this to the whole assembly by using 'internal' or to the class only by using 'private'. To allow this to be used only to a subset of the Assembly classes, namely the inheriting ones, one can not use "protected internal" since this means "protected or internal" and is of very rare use. A modifier for protected-and-internal would come very handy here.
Morten Nielsen commented
There's actually a very good reason for making something protected internal. The use case is that you want subclasses to be able to get access to this, but you internal classes needs to be able to execute this method from the outside as well. I hit use-cases all the time where this is useful (usually a class that takes a set of customizable objects - ie custom subclasses - and can call into these in ways other outside classes wouldn't have to.
So while i to some extent can see the idea that this could be useful to further encapsulate your internal code structure (I a strong believer in having your internal API pretty too), we can't go and change the meaning of a well-defined keyword as you want. That would be a HUUUUUUGE breaking change on existing .NET code. So if anything we would need a new keyword to do this.
If something is protected then it should be possible to see it if another DLL is made. Otherwise, your class itself should be internal.
I think it would be better that you would refactor your code so it won't be a problem.