Não é possível transmitir conjuntos genéricos?

Estou com uma questão interessante hoje. Considere o seguinte código

public static class Parent {}
public static class Child extends Parent {}

Set<Child> childs = new HashSet();
Set<Parent> parents = (Set<Parent>)childs; //Error: inconvertible types

Parent parent = (Parent)new Child(); //works?!

Por que um elenco como esse não funcionaria? Eu esperaria que um elenco implícito não funcionasse devido às várias regras de genéricos, mas por que um elenco explícito não pode funcionar?

questionAnswers(4)

yourAnswerToTheQuestion