Java Generics: tipo genérico definido apenas como tipo de retorno

Estou procurando um código GXT para GWT e deparei-me com esse uso de genéricos que não consigo encontrar outro exemplo nos tutoriais de Java. O nome da classe écom.extjs.gxt.ui.client.data.BaseModelData se você quiser ver todo o código. Aqui estão as partes importantes:

private RpcMap map;

public <X> X get(String property) {
  if (allowNestedValues && NestedModelUtil.isNestedProperty(property)) {
    return (X)NestedModelUtil.getNestedValue(this, property);
  }
  return map == null ? null : (X) map.get(property);
}

X é definido em nenhum outro lugar da classe ou em qualquer lugar da hierarquia e, quando clico em "ir para a declaração" no eclipse, ele apenas vai para o<X> na assinatura do método público.

Eu tentei chamar esse método com os dois exemplos a seguir para ver o que acontece:

public Date getExpiredate() {
    return  get("expiredate");
}

public String getSubject() {
    return  get("subject");
}

Eles compilam e não mostram erros ou avisos. Eu pensaria que, no mínimo, teria que fazer um elenco para que isso funcionasse.

Isso significa que os genéricos permitem um valor de retorno mágico que pode ser qualquer coisa e explodirá em tempo de execução? Isso parece contrário ao que os genéricos devem fazer. Alguém pode me explicar isso e possivelmente me fornecer um link para alguma documentação que explica isso um pouco melhor? Analisei o pdf de 23 páginas da Sun sobre genéricos e cada exemplo de valor de retorno é definido no nível da classe ou em um dos parâmetros passados.

questionAnswers(6)

yourAnswerToTheQuestion