JDK 1.7 rompe compatibilidad hacia atrás? (genéricos)

He encontrado temas similares, pero demasiado complicados y no exactamente iguales. Así que la cosa es. Aquí está el código (mínimo) que está bien en 1.6, pero no compila con 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();
    }
}

En 1.7 el error es este:

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

Entiendo el tipo de borrado y por qué es un código incorrecto. Simplemente no entiendo por qué podemos tener este código en nuestro proyecto de compilación y ejecución en 1.6, cuando 1.7 tiene problemas con él. ¿Qué está mal? ¿Es un error en el compilador 1.6 que nos permite hacerlo? ¿Es posible que funcione en 1.7 aparte de la reescritura?

Versión JDK1.6 javac: 1.6.0_43Versión JDK1.7 javac: 1.7.0_25

Respuestas a la pregunta(2)

Su respuesta a la pregunta