Isso é um bug dinâmico?

Ao implementar o envio dinâmico usandodynamic em uma classe genérica, e o parâmetro de tipo genérico é uma classe interna privada em outra classe, o fichário de tempo de execução lança uma exceçã

Por exemplo

using System;

public abstract class Dispatcher<T> {
    public T Call(object foo) { return CallDispatch((dynamic)foo); }

    protected abstract T CallDispatch(int foo);
    protected abstract T CallDispatch(string foo);
}

public class Program {
    public static void Main() {
        TypeFinder d = new TypeFinder();

        Console.WriteLine(d.Call(0));
        Console.WriteLine(d.Call(""));
    }

    private class TypeFinder : Dispatcher<CallType> {
        protected override CallType CallDispatch(int foo) {
            return CallType.Int;
        }

        protected override CallType CallDispatch(string foo) {
            return CallType.String;
        }
    }

    private enum CallType { Int, String }
}

Aqui umRuntimeBinderException será exibido com a mensagem

'Dispatcher.CallDispatch (int)' está inacessível devido ao seu nível de proteção

O motivo da inacessibilidade é que o parâmetro typeT é o privadoCallType qualDispatcher<T> Não pode ser acessado. Portanto,CallDispatch deve estar inacessível - mas não é, porque é acessível comoT.

Isso é um erro comdynamic, ou isso não deve ser suportado?