A resolução do método genérico em C # falha com um erro de chamada ambíguo

Suponha que eu tenha definido dois tipos não relacionados e dois métodos de extensão com a mesma assinatura, mas com filtros de tipos diferentes:

public class Foo {}
public class Bar {}

public static class FooExtensions
{
    public static TFoo Frob<TFoo>(this TFoo foo) where TFoo : Foo { }
    public static TFoo Brob<TFoo>(this TFoo foo) where TFoo : Foo { }
}

public static class BarExtensions
{
    public static TBar Frob<TBar>(this TBar bar) where TBar : Bar { }
}

Então quando eu escrevonew Foo().Frob(); Eu recebo um erro

error CS0121: The call is ambiguous between the following methods or properties: 'FooExtensions.Frob<TFoo>(TFoo)' and 'BarExtensions.Frob<TBar>(TBar)'

Alguém poderia explicar por que isso falha e como evitá-lo?

EDIT: Isso acontece na atualização 3 do VS2015 e no VS2017 RC.

EDIT2: A idéia aqui é ter uma API fluente que funcione em uma hierarquia de classes:

new Foo()
  .Frob()
  .Brob()

questionAnswers(1)

yourAnswerToTheQuestion