O JDK 1.7 quebra a compatibilidade com versões anteriores? (genéricos)

Eu encontrei tópicos semelhantes, mas muito complicados e não exatamente o mesmo. Então a coisa é. Aqui está o código (mínimo), que é bom em 1.6, mas não compila com 1.7 javac.

public class Test {
    private static class A<T>{};
    private static class B{};
    private static class C{};

    B doSomething(A<B> arg){
        return new B();
    }

    C doSomething(A<C> arg){
        return new C();
    }
}

No 1.7 o erro é este:

java: name clash: doSomething(Test.A<Test.C>) and doSomething(Test.A<Test.B>) have the same erasure

Eu entendo o tipo de apagamento e porque é um código errado. Eu simplesmente não entendo porque podemos ter este código em nosso projeto compilando e rodando em 1.6, quando o 1.7 tem problemas com ele. O que está errado? É um erro no compilador 1.6 que nos permite fazê-lo? É possível fazer isto funcionar em 1.7 diferente de reescrever?

JDK1.6 versão javac: 1.6.0_43JDK1.7 Versão javac: 1.7.0_25

questionAnswers(2)

yourAnswerToTheQuestion