Decreasing the https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/access-modifiers[accessibility level] of an inherited method that is not https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/override[overridable] to https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/private[private] will shadow the name of the base method and can lead to confusion.
Another potential problem is the case of a class deriving from `Derived` and accessing `SomeMethod`. In this scenario, the method accessed will instead be the `Base` implementation, which might not be what was expected.
One way to mitigate this, is by sealing the `Derived` class by using the https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/sealed[sealed] modifier, thus preventing inheritance from this point on.
Another way to mitigate this, is by having the `Derived` implementation match the https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/access-modifiers[accessibility] modifier of the `Base` implementation of `SomeMethod`. From a caller's perspective, this is closer to the expected behavior.
Last but not least, consider using a different name for the `Derived` method, thus completely eliminating any confusion caused by the naming collision.