Как происходит вызов сокрытого метода под капотом?

Я знаю, как происходит вызов виртуальных метод под капотом, но ни у Голдштейна, ни у Рихтера я не нашёл инфу о том, как происходит вызов сокрытого метода. Так как это всё-таки происходит? Help me please. То есть как происходит вызов этого метода:

class A
{
 public void DoSmth()
 {

 }
}
class B : A
{
 public new void DoSmth()
 {

 }
}
class Program
{
 public static void Main()
 {
  A a = new B();
  a.DoSmth();
 }
}

Ответы (2 шт):

Автор решения: Aziz Umarov

Скрытые открытые виртуальные это всё наши абстрактные понимания сущности. На уровне вызова все определено идёт вызов того или иного метода, а которого именно определено во время компиляции/интерпретации.

Ответ на ваш вопрос можно почитать Тут

Идея сокрытия проста. С помощью new вы определяете новый метод соответственно каждый класс вызовет свою ф-ю

→ Ссылка
Автор решения: Igor

Вызов "сокрытого" метода производится, исходя из объявленного типа переменной, от которой этот метод вызывается. Определяется, какой метод вызывать, на этапе компиляции.

В Вашем примере: тип переменной a - A. Значит, вызовется метод A.DoSmth.

→ Ссылка