"protected" is a misfeature and Nim did well to avoid it ... See <https://ceylon-lang.org/documentation/1.3/faq/language-design/#no_protected_modifier>
C# went way the other way into much worse misdesign with public/private/protected/internal/protected internal/private protected, which don't mean what they look like they mean and don't even cover all the cases (protected internal is accessible to the current _package_ OR to subclasses in _any_ package, private protected is accessible to the current _class_ OR subclasses IF in the current package).